【问题标题】:Python and openpyxl is saving my shared workbook as unsharedPython 和 openpyxl 将我的共享工作簿保存为非共享
【发布时间】:2019-08-05 17:03:15
【问题描述】:

使用 Python 和 openpyxl 我有一个代码进入工作簿,每天向一些单元格添加一堆信息,然后关闭并保存它。我的问题是,如果打开此工作簿,代码将不起作用(显然)。

通过共享工作簿(多个用户可以一次编辑)我可以克服这个问题,但是在代码运行一次后,python 保存然后将其恢复为关闭的、未共享的工作簿。 任何人都知道openpyxl是否可以保存为共享?我在网上找不到任何东西。 先发制人地感谢您的帮助。

【问题讨论】:

    标签: python excel openpyxl shared


    【解决方案1】:

    好像openpyxl保存Excel工作簿的时候,里面的docProps/app.xml文件被擦除了,只包含很少的信息。

    一个快速(但又脏)的解决方案是使用 zipfile 来获取这些信息并将它们传输到新的/保存的文件中。

    import zipfile, openpyxl
    
    def shared_pyxl_save(file_path, workbook):
        """
        `file_path`: path to the shared file you want to save
        `workbook`: the object returned by openpyxl.load_workbook()
        """
        zin = zipfile.ZipFile(file_path, 'r')
        buffers = []
        for item in zin.infolist():
            buffers.append((item, zin.read(item.filename)))
        zin.close()
    
        workbook.save(file_path)
    
        zout = zipfile.ZipFile(file_path, 'w')
        for item, buffer in buffers:
            zout.writestr(item, buffer)
        zout.close()
    

    【讨论】:

    • 很抱歉花了这么长时间才接受这个答案。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多