使用openoffice uno模块用python编写的excel表中的冻结窗格
Posted
技术标签:
【中文标题】使用openoffice uno模块用python编写的excel表中的冻结窗格【英文标题】:freezing pane in excel sheet being written with python using openoffice uno module 【发布时间】:2011-09-15 06:18:50 【问题描述】:我有一个 Python 脚本,它读取 OpenOffice odt 模板并在插入所需数据后创建一个 xls 文件。我在 python 中使用 OpenOffice uno 模块。
我需要在生成的 xls 中执行冻结窗格。我在正在使用的 odt 模板中根据需要应用了冻结窗格,但冻结窗格未应用于正在生成的 xls。有什么方法可以在生成的 xls 中以编程方式设置冻结窗格选项?
任何内置函数或任何东西。
【问题讨论】:
请展示一个最小的代码示例。 您使用的是什么操作系统?如果是Windows,你上面有运行excel吗? 【参考方案1】:对于使用 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))
【讨论】:
以上是关于使用openoffice uno模块用python编写的excel表中的冻结窗格的主要内容,如果未能解决你的问题,请参考以下文章
在最新的 Open Office 安装中未找到 Python Uno
如何使用 UNO 遍历 OpenOffice/LibreOffice 中的整个文档
OpenOffice uno.util.Bootstrap.bootstrap() 挂起并且不返回