下面是一个简单的代码片段,用于打开一个.xlsm文件,使用python向该文件写入一些值,然后保存该文件。
import openpyxl
from openpyxl import load_workbook
def toExcel():
wb = load_workbook(filename="C:\\Users\\Mark\\Documents\\Test.xlsm")
ws = wb.worksheets[0]
ws.cell(row=1, column=1).value = 'foo'
ws['A2'] = 'bar'
wb.save("C:\\Users\\Mark\\Documents\\Test1.xlsm")
toExcel()
当文件打开并保存时,它提到文件格式无效/损坏,无法打开。如果从wb.save中删除.xlsm,则在选择excel并打开方式后,它将保存并打开。为什么文件格式不是有效的?
发布于 2016-07-03 20:09:17
从这里:https://openpyxl.readthedocs.io/en/default/tutorial.html#saving-to-a-file
说明
以下操作将失败:
>>> wb = load_workbook('document.xlsx')
>>> # Need to save with the extension *.xlsx
>>> wb.save('new_document.xlsm')
>>> # MS Excel can't open the document
>>>
>>> # or
>>>
>>> # Need specify attribute keep_vba=True
>>> wb = load_workbook('document.xlsm')
>>> wb.save('new_document.xlsm')
>>> # MS Excel can't open the document
>>>
>>> # or
>>>
>>> wb = load_workbook('document.xltm', keep_vba=True)
>>> # If us need template document, then we need specify extension as *.xltm.
>>> # If us need document, then we need specify attribute as_template=False.
>>> wb.save('new_document.xlsm', as_template=True)
>>> # MS Excel can't open the document
发布于 2019-12-19 21:13:48
我之所以找到这篇文章,是因为我试图用openpyxl从头开始创建一个.xlsm
文件。我发现之所以会出现这个错误,是因为在加载工作簿时,需要将keep_vba=True
作为第二个参数传递给load_workbook
函数。
这就是你的load_workbook
函数应该是什么样子:
wb = load_workbook(filename="C:\\Users\\Mark\\Documents\\Test.xlsm", keep_vba=True)
顺便说一句,here是我的一篇文章,讨论了如何使用openpyxl从头开始创建.xlsm
文件。
https://stackoverflow.com/questions/38173861
复制