LibreOffice / OpenOffice calc python マクロで pyuno を使用する場合、単純にセルの範囲を選択できるようにしたいのですが、マクロを実行すると、すべてのセル データ (たとえば反復可能なオブジェクト) を選択できるようになります。操作できるように、python スクリプト内で取得できます。これに関するドキュメントはほとんど見つかりませんでした。これを行う方法を示すサンプル コードを歓迎します。
2512 次
2 に答える
3
試行錯誤の非常に苦痛な時間の後 (pyuno の使用に関する乏しいドキュメントと例のおかげで、何かを見落としていた場合は修正してください)、私が求めていることを行うように見える次のコードになりました。 :
import uno
doc = XSCRIPTCONTEXT.getDocument()
def mymodule():
ctrlr = doc.CurrentController
sel = ctrlr.getSelection()
x = sel.getDataArray()
# now the data is available as nested tuples in x, so do something with it
file('/tmp/out', 'w').write(repr(x))
これを python ファイルに入れ、(少なくとも Ubuntu 14.04 では) ディレクトリに保存し、パッケージがインストールされ~/.config/libreoffice/4/user/Scripts/python
ている限り、 LibreOffice Calc 内から[ツール] -> [マクロ] -> [マクロの実行]を介して実行できます。メニューオプション。または、[ツール] → [カスタマイズ] → [キーボード] ダイアログを使用して、キーボード ショートカットにバインドすることもできます。libreoffice-script-provider-python
さらなる分析のために LibreOffice Calc から Octave にデータをロードできる、より完全な例については、この pyuno scriptを参照してください。
于 2015-02-18T21:27:03.383 に答える
0
または、このようなことを試すこともできます。これは、より理解しやすいと思います。
desktop = XSCRIPTCONTEXT.getDesktop()
model = desktop.getCurrentComponent()
try:
sheets = model.getSheets()
except AttributeError:
raise Exception("This script is for Calc Spreadsheets only")
#sheet = sheets.getByName('Sheet1')
sheet = model.CurrentController.getActiveSheet()
oSelection = model.getCurrentSelection()
oArea = oSelection.getRangeAddress()
first_row = oArea.StartRow
last_row = oArea.EndRow
first_col = oArea.StartColumn
last_col = oArea.EndColumn
于 2015-03-06T16:33:49.110 に答える