gpt4 book ai didi

python - 使用 pyuno 对 calc 文档中的单元格范围进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:36 26 4
gpt4 key购买 nike

使用 pyuno 打开一个 LibreOffice 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)

此代码被正确解释,但不执行任何操作(计算文档中的行未排序)我错了吗?我认为 sortDecr 具有正确的类型(PropertyValue 元组),但我不确定。我使用 Windows 7、LibreOffice 4.3.4.1、Python 3.3谢谢您的回答。

最佳答案

更改行:x.Value = (colDecr,)

作者:x.Value = uno.Any('[]com.sun.star.table.TableSortField',(aCriterios,))

关于python - 使用 pyuno 对 calc 文档中的单元格范围进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com