1

我有一个 Python 脚本,它读取 OpenOffice odt 模板并在插入所需数据后创建一个 xls 文件。我在 python 中使用 OpenOffice uno 模块。

我需要在生成的 xls 中执行冻结窗格。我在正在使用的 odt 模板中根据需要应用了冻结窗格,但冻结窗格未应用于正在生成的 xls。有什么方法可以在生成的 xls 中以编程方式设置冻结窗格选项?

任何内置功能或任何东西。

4

1 回答 1

0

为了用 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))
于 2015-03-11T10:33:19.847 回答