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

如何使用openpyxl编辑带XML Map的Dynamics NAV模板且不丢失映射?

问题

我有一个来自Dynamics NAV的XLSX模板,可用于向系统导入数据。当我在模板中填写数据并尝试导入NAV时,收到错误提示:“Excel工作簿必须包含XML映射”。原模板带有XML Map,但使用openpyxl编辑数据并保存后,该映射丢失。相关代码如下:

import openpyxl

wb = openpyxl.load_workbook("sheet.xlsx")
sheet = wb.active

sheet["A4"].value = 'Test'
sheet["B4"].value = '1234'

wb.save('test.xlsx')
wb.close()

请问是否有方法在编辑XLSX文件数据并保存时保留XML Map?

解决方法
  • 改用xlwings库:openpyxl目前不支持保留XML映射(XML Maps),因为它未处理XLSX文件中关联的customXml和xmlMaps节点内容。xlwings通过调用Excel原生接口(Windows用COM,Mac用AppleScript)操作文件,能完整保留原模板的所有格式及XML映射。示例代码:
import xlwings as xw

with xw.App(visible=False) as app:
    wb = xw.Book("sheet.xlsx")
    sheet = wb.sheets.active
    sheet.range("A4").value = 'Test'
    sheet.range("B4").value = '1234'
    wb.save('test.xlsx')
    wb.close()
  • 手动迁移XML映射(不推荐):若必须使用openpyxl,可将原XLSX解压后,把customXml文件夹和xl/workbook.xml里的<xmlMaps>节点内容复制到新保存的XLSX文件中(XLSX本质是ZIP压缩包)。该方法操作繁琐,容易因文件结构变动导致出错,仅适合临时场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:55:26