2012-01-23 5 views
0

私はpyunoを使ってExcelスプレッドシート(​​Linux上で動作している)を読んでいる。多くのセルは明らかに利用できないアドインを参照する公式を持っている。しかし、セルの値は私が望むものです。スプレッドシートを開くためにuno(openoffice api)を使う*再計算なし*

しかし、シートを読み込んで読み込むと、それらの式が評価されているようで、値にエラーが上書きされているようです。

私が働いているいずれもいくつかのこと、試してみた

:上desktop.loadComponentFromURL

  • コールdocument.enableAutomaticCalculation(偽)の呼び出しで

    • セットフラグAutomaticCalculationは= Falseを、MacroExecutionMode = NEVER_EXECUTEを読み込まれた文書

    何か提案がありますか?

  • +0

    これらの値は実際に保存されていますか?そうでない場合、これを行う方法はありません。 – Marcin

    答えて

    0

    フォームが問題ではない場合は、値(数式ではない)のみが存在するスプレッドシートのコピーを処理して問題を回避できます。

    これをすばやく実行するには、シート全体のコンテンツを選択し、コピーして、特殊なペーストを行います。 「値」を除くすべてを削除します。新しいファイルに保存します(元のファイルを上書きしないようにするか、すべての数式が失われることを忘れないようにしてください)。スクリプトは、このファイルを処理できるはずです。

    これはプログラム的に行う方法が必要なので、これは醜い解決策です。

    +0

    SimplerはExcelを開いただけで、Calcモードを手動に設定し、スプレッドシートを読み込み、再保存します。今度はcalcモードを手動に設定し、OOはそれをロードする際にそれを尊重します。しかし、これはExcelとは独立したオブジェクト指向を使用する目的を破っています。私がこの程度までExcelを使用しているのであれば、私はすべての道を行くかもしれないし、OOを全く使わないかもしれない。 –

    0

    Calcは、ドキュメントを読み込んだ後にキャッシュ結果の使用をまだサポートしていません。 Libreoffice Calcはxlsドキュメントにキャッシュ結果を使用するようになりました。結果はodsにも格納されますが、ドキュメントのロード中は無視され、式の結果は保存された式をコンパイルして解釈することによって評価されます。

    odsとxlsxにもこれを追加する計画がありますが、そこに多くのodsプロデューサがファイルに不正な結果を書き込んでいます。だから今までの唯一の解決策は、結果の保存(またはcalc内での実装)のみの第2バージョンのドキュメントを作成することです。

    +0

    この情報をありがとう。ちょうど明らかになる:Libreoffice Calcは、xlsxではなくxlsxに保存された値を使用しますか?それも実用的な解決策ではありません。ファイル内の不正確な結果:再計算するか、既存の結果を使用するかは、選択肢をユーザーに任せないでください。 MSは通常、それがユーザーよりも優れていると判断するものですが、この場合はユーザーにオプションを提供します。 –

    +0

    誰も知るまでこれを実装していないからです。 XLSXでは手間がかかるかもしれませんが、ODSの場合は計画されており、間もなく実装されることがうまくいきます。 – moggi

    +0

    まだ理解していない - なぜユーザーに選択肢を与えないのか?明らかに、開発者は、xlsxが「良い」ものであるかどうかをユーザーよりよく知っていると思っており、その判断を強制するとユーザーが選択を禁じます。実装は自明でなければなりません。再計算はしません。 –

    関連する問題