使用 openoffice uno 模块用 python 编写 Excel 工作表中的冻结窗格

发布于 2024-12-04 10:35:41 字数 226 浏览 1 评论 0原文

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

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

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

I have a Python script that reads a OpenOffice odt template and creates a xls file after inserting required data. I am using OpenOffice uno module with python.

I need to perform freeze pane in the xls being generated. I applied the freeze pane as required in the odt template being used but the freeze pane is not being applied to the xls being generated. Is there any way I can programatically set freeze pane option in the xls being generated?

Any inbuilt function or anything.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦在夏天 2024-12-11 10:35:41

为了使用 uno 冻结窗口,我发现它只有在使用选项 Hidden=False 打开文档时才有效。当 Hidden 设置为 True 时,它​​将不会应用冻结命令。

    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))

For freezing the window with uno I found that it only works if you open your document with the option Hidden=False. When Hidden is set to True it will not apply the freeze command.

    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))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文