You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用openpyxl修改xlsm宏文件后Excel提示格式无效,求解决方案

问题:修改带宏的XLSM文件后无法正常打开

我尝试用Python的openpyxl库修改一个已存在的带宏XLSM文件,读取文件中的值处理后写入下一列,代码如下:

import pandas as pd
from openpyxl import load_workbook 

filepath = 'filepath.xlsm'
df = pd.read_excel(filepath, sheet_name="Sheet")
wb = load_workbook(filepath)

worksheet = wb['ER']

id = 10000000
j = 2

for row in df.iterrows():
    values = (row[1]['Column1']).split(", ")
    length = len(values)
    for i in range(length):
        values[i] = "ABC" + str(id) + "TEST"
        id = id + 1
    final_values = str(values).replace("['", "").replace("'","").replace("]","").replace(", ",",")
    worksheet.cell(row=j,column=2).value = final_values
    j = j + 1 

wb.save(filepath)

保存文件后再次打开时,弹出错误提示:

Excel Cannot Open the File Because The File Format or File Extension Is Not Valid

请问需要修改哪些内容才能正常打开该文件?


解决方案

  • 加载带宏文件时保留VBA结构:openpyxl默认不保留宏相关内容,加载XLSM文件必须添加keep_vba=True参数,否则会破坏文件的宏容器结构,导致Excel无法识别格式。修改加载代码:

    wb = load_workbook(filepath, keep_vba=True)
    
  • 优先保存为临时文件验证:直接覆盖原文件容易因程序异常导致文件损坏,建议先保存到临时文件,确认能正常打开后再替换原文件:

    temp_file = 'temp_modified.xlsm'
    wb.save(temp_file)
    # 手动或通过代码验证temp_file可正常打开后,再替换原filepath
    
  • 确认文件读写权限:确保运行程序的用户对目标文件夹有读写权限,避免保存时因权限不足导致文件部分写入,最终损坏文件格式。


内容的提问来源于stack exchange,提问作者clemdcz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:40:29