0
使用pyuno我打開一個LibreOffice calc文檔,我定義了一系列單元格並對其進行排序。下面是代碼:使用pyuno對calc文檔中的單元格範圍進行排序
import os
import uno
# open a calc document
# (it is assumed that LibreOffice is launched with the command line:
# soffice -accept="socket,host=localhost,port=2002;urp")
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)
url = uno.systemPathToFileUrl(os.path.abspath("c:/aaa/essai.xls"))
doc = desktop.loadComponentFromURL(url,"_blank", 0,())
# range to be sorted
range = doc.Sheets.getByIndex(0).getCellRangeByPosition(0,0,4,4)
# use the first column for the sort key
colDescr = uno.createUnoStruct(
'com.sun.star.table.TableSortField')
colDescr.Field = 0
# sort descriptor
sortDescr = range.createSortDescriptor()
for x in sortDescr:
if x.Name == 'SortFields':
x.Value = (colDescr,)
break
else:
raise KeyError('SortFields')
# sort ...
range.sort(sortDescr)
此代碼是正確的解釋,但不執行任何操作(該行不計算文檔中排序) Am'I錯了嗎?我認爲sortDescr有正確的類型(PropertyValue元組),但我不確定。 我使用Windows 7,LibreOffice 4.3.4.1,Python 3.3 謝謝你的回答。