下面是一个简单的片段,用于打开一个 .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()
Run Code Online (Sandbox Code Playgroud)
当文件打开并保存时,它提到文件格式无效/损坏且无法打开。如果 .xlsm 从 wb.save 中删除,它会在选择 excel with Open With 后保存并打开。为什么文件格式无效?
我发现这篇文章是因为我试图.xlsm使用 openpyxl 从头开始创建一个文件。我发现我收到了这个错误,因为当您加载工作簿时,您需要将keep_vba=True第二个参数传递给函数load_workbook。
所以你的load_workbook函数应该是这样的:
wb = load_workbook(filename="C:\\Users\\Mark\\Documents\\Test.xlsm", keep_vba=True)
Run Code Online (Sandbox Code Playgroud)
作为旁注,这是我的帖子,讨论.xlsm使用 openpyxl 从头开始创建文件。
从这里: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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15976 次 |
| 最近记录: |