0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

既存のLibreOfficeCalcファイルをPythonで操作する

Last updated at Posted at 2025-01-16

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で作れる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?