【问题标题】: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()