使用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 中的整个文档

Openoffice3.1 pyuno混淆错误

OpenOffice uno.util.Bootstrap.bootstrap() 挂起并且不返回

如何将 OpenOffice.org 作为后台进程运行以将我的应用程序连接到使用 UNO Java API?

让 python 导入 uno / pyuno