UbuntuでLibreOfficeCalcの既存ファイルを作る
LibreOfficeCalcは入っているはずなので、インストールは省略
A1セルに確認用の文字をなにか入れて、Pythonプログラムと同じディレクトリにDisp.odsとして保存します。
プログラム
run.py
#!/usr/bin/python3
import subprocess as sproc
import uno
import time
# Display Disp.ods
sproc.run('soffice "--accept=socket,host=localhost,port=2002;urp;" --norestore --nologo --nodefault Disp.ods &',shell=True)
# 上記sofficeが完全に起動するまでちょい待ちを入れる
time.sleep(2)
lcont=uno.getComponentContext()
resolver=lcont.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver",lcont)
cctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
smgr = cctx.ServiceManager
dsktop=smgr.createInstanceWithContext("com.sun.star.frame.Desktop", cctx)
# 以下のファイル指定は、絶対パスにする
doc=dsktop.loadComponentFromURL("file:///home/kawa/develops/python/NCDLibre/Disp.ods", "_default", 0, ())
sheet=doc.Sheets[0]
# A1セルの内容を表示する
cell=sheet.getCellRangeByName("A1")
print(cell.String)
# B1セルに”AAA”を表示
cell=sheet.getCellRangeByName("B1")
cell.String="AAA"
time.sleep(5)
doc.close(True)
実行
このファイルに実行権をつけて
./run.py
で実行するとA1セルの内容を表示
B2セルにAAAと書いて
保存せずに終了する
これができると何が嬉しいかというと
LibreOfficeCalcで作った固定書式にデータベースからデータを取ってきて反映させる等のアプリケーションをPythonで作れる