1

30 列に約 500 行のカンマ区切りの値を含む LibreOffice スプレッドシート (data.ods) があります。最初の行には、列ヘッダーが含まれています。

Data.ods は、スクリプトによって 1 日を通して定期的に更新されます。次に、別のスプレッドシート (main.ods) の data.ods 内のセルへのリンクをいくつか作成します。

現在、次のことを行っています。

1) Python スクリプトを使用して data.ods を生成します。

2) data.ods を開いて、LibreOffice がコンマ区切りの値のテキスト インポートを実行して行に入力できるようにします。

3) main.ods を開きます (リンクが自動的に更新されます)。

現在、main.ods を開いたままにしておくことはできません。なぜなら、data.ods を閉じた後でも、LibreOffice にはまだ何らかのロックがかかっているように見え、LibreOffice を完全に閉じるまでスクリプトで data.ods を編集できないからです ( main.ods を閉じる必要があります)。

私は次のことをしたいと思います:

1) main.ods を開きます。

2) スクリプトを介して data.ods を生成します。

3) Edit...Links...Update Values を使用して、更新された値を main.ods にインポートします。

4) main.ods を開いたままにします。

5) スクリプトを介して新しい data.ods を生成します。

6) Edit...Links...Update Values を使用して、更新された値を main.ods にインポートします。

7) 必要に応じて繰り返します。

4

2 に答える 2

0

お気づきかもしれませんが、Python スクリプトを使用して Open/Libre Offie を処理する方法があります。独自の Python インタープリターも同梱されています。

問題は、それを行う方法に関するドキュメントがひどいことですが、機能の 1 つは、外部で実行されている Python スクリプトを使用して、インターフェイス (スプレッドシートなど) で開いている Document にアクセスし、それに値を追加することです。

遅いですが、問題なく動作します。数百行しかないので、速度は問題になりません。

それでは、そのためのドキュメントを見つけて、どこから始めればよいかについてのリンクを取得してみましょう: http://www.openoffice.org/udk/python/python-bridge.html#modes

サンプル コードを Python インタラクティブ プロンプト (LibreOffice と共にインストールされた Python である必要があります) に貼り付けると、使用可能なメソッドと属性を Pythondirで調べて、スクリプトからセルの内容を編集するためのメソッド呼び出しを見つけることができます。 .

于 2012-04-26T02:56:58.463 に答える
0

jsbueno が述べたように、uno モジュールを使用することで、ドキュメントが開いている間 (ドキュメントの手動編集をブロックしません) に Python を実行できます。

ドキュメントが現在ゴミであることに同意しました。私はwww.documenthacker.com / http://documenthacker.wordpress.comでそれについて何かしようとしていますが、Writer に焦点を当てています。ただし、プログラムは似ており、ドキュメントを開いたり、ドキュメントをナビゲートしたりするためのメソッドが役立つ場合があります。Python を使用した LibreOffice/OpenOffice のプログラミングに取り掛かると、次の問題を解決するのはかなり簡単になります。

インターネット上では、一般に Python よりも Java の方が多くの例がありますが、残念ながら、例の間でどのように変換するかは半分だけ明らかです (私のドキュメントの to-do リストにあります)。幸いなことに、Python の方法は一般的にはるかに単純です。

于 2013-03-05T21:12:44.540 に答える