最近研究了一個,用python來向libreoffice spreadsheet中的寫資料,openoffice管方網站的資料也不是很清楚,
在網上找到的幾個比較有用的網站有:http://wiki.services.openoffice.org/wiki/Python#PyUNO_Modules
上面了有一個比較好的入門文檔:http://lucasmanual.com/mywiki/OpenOffice
還有一個人在論壇上寫的一個比較有用的例子:http://www.oooforum.org/forum/viewtopic.phtml?p=56037#56037
這個例子非常好,告訴你怎樣操作spreadsheet,本人在其它地方沒有找到操作spreadsheet的文檔,如果哪位網友找到了,留個言,謝謝。
現在把基本的代碼貼過來,其它的請查上面給出的那兩個網址即可
首先要啟動libreoffice用下面命令:
libreoffice -accept="socket,host=localhost,port=2002;urp;"
Start openoffice so it listens on a port.
串連:
import uno
def connect():
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
return desktop
class Calc:
def __init__(self, file_name = "private:factory/swriter"):
desktop = connect()
self.doc = desktop.loadComponentFromURL(file_name, "_blank", 0, ())
self.sheet = self.doc.getSheets().getByIndex(0)
def get_dic(self, start, end):
for row in range(start - 1, end):
value = self.sheet.getCellByPosition(0, row).getString()
self.sheet.getCellByPosition(1, row).setString("have read")
def save(self):
self.doc.store()
def main():
calc_file = "file:///home/zhangliyong/Desktop/2011.xls"
calc_obj = Calc(calc_file)
calc_obj.get_dic(5, 46)
calc_obj.save()
注意在操作libreoffice文檔時,當指寫文檔路徑時前面要加file://