我有一个 Python 脚本,它读取 OpenOffice odt 模板并在插入所需数据后创建一个 xls 文件。我在 python 中使用 OpenOffice uno 模块。
我需要在生成的 xls 中执行冻结窗格。我在正在使用的 odt 模板中根据需要应用了冻结窗格,但冻结窗格未应用于正在生成的 xls。有什么方法可以在生成的 xls 中以编程方式设置冻结窗格选项?
任何内置功能或任何东西。
我有一个 Python 脚本,它读取 OpenOffice odt 模板并在插入所需数据后创建一个 xls 文件。我在 python 中使用 OpenOffice uno 模块。
我需要在生成的 xls 中执行冻结窗格。我在正在使用的 odt 模板中根据需要应用了冻结窗格,但冻结窗格未应用于正在生成的 xls。有什么方法可以在生成的 xls 中以编程方式设置冻结窗格选项?
任何内置功能或任何东西。
为了用 uno 冻结窗口,我发现它只有在使用 Hidden=False 选项打开文档时才有效。当 Hidden 设置为 True 时,它不会应用 freeze 命令。
import uno
#function for setting parameters
def make_property_array(**kwargs):
"""convert the keyword arguments to a tuple of PropertyValue unostructures"""
array = []
for name, value in kwargs.iteritems():
prop = uno.createUnoStruct("com.sun.star.beans.PropertyValue")
prop.Name = name
prop.Value = value
array.append(prop)
return tuple(array)
#load the document
url = "file:///" + pathtoyourfile.replace("\\","/")
document = desktop.loadComponentFromURL(url, "_blank", 0, make_property_array(Hidden=False))
#set cell A1 as active
table.getCellByPosition(0,0)
#freeze the sheet at row 1
document.CurrentController.freezeAtPosition(0,1)
#save document in Excelformat
document.storeAsURL(url.replace("ods","xls"), make_property_array(FilterName="MS Excel 97", Overwrite=True))