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

Python批量转换XML及Strict Open XML为XLSX报错问题求解

XML批量转XLSX解决方案

原脚本错误原因

你之前使用的脚本仅修改了文件扩展名,未对文件内部内容做格式转换,因此会触发Excel的格式不匹配报错。修改为xls后缀可打开是因为Excel对旧格式的容错兼容,但文件本质仍是XML结构,无法直接作为正规xlsx文件使用。

前置依赖安装

首先安装所需Python库:

pip install pandas openpyxl lxml

通用跨平台转换脚本

适配绝大多数表结构XML文件,生成标准xlsx格式文件,不会修改原XML:

import os
import pandas as pd

# 替换为你的XML文件所在文件夹路径
xml_folder = "/FolderWithXMLFiles"

for filename in os.listdir(xml_folder):
    # 仅处理.xml后缀的文件
    if not filename.lower().endswith(".xml"):
        continue
    xml_path = os.path.join(xml_folder, filename)
    # 生成输出xlsx路径
    xlsx_path = os.path.join(xml_folder, f"{os.path.splitext(filename)[0]}.xlsx")
    
    try:
        # 读取XML内容,嵌套结构可添加xpath参数指定表格节点,比如xpath="//row"
        df = pd.read_xml(xml_path)
        # 导出为xlsx格式,不保留索引
        df.to_excel(xlsx_path, index=False, engine="openpyxl")
        print(f"转换完成:{filename}")
    except Exception as e:
        print(f"转换失败:{filename},错误信息:{str(e)}")

Windows环境高兼容性备选方案

如果你的XML是Excel导出的专用XML格式,可直接调用Excel本身的解析能力转换,完美适配所有Excel支持的XML/Strict Open XML格式:

  1. 先安装依赖:
pip install pywin32
  1. 转换脚本:
import os
import win32com.client as win32

xml_folder = "/FolderWithXMLFiles"
# 启动Excel后台进程
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False

for filename in os.listdir(xml_folder):
    if not filename.lower().endswith(".xml"):
        continue
    xml_path = os.path.join(xml_folder, filename)
    xlsx_path = os.path.join(xml_folder, f"{os.path.splitext(filename)[0]}.xlsx")
    
    try:
        wb = excel.Workbooks.Open(xml_path)
        # 51为xlsx格式的官方代码
        wb.SaveAs(xlsx_path, FileFormat=51)
        wb.Close()
        print(f"转换完成:{filename}")
    except Exception as e:
        print(f"转换失败:{filename},错误信息:{str(e)}")

excel.Quit()

注意事项

  • 如果XML为嵌套结构,可调整pd.read_xml()的xpath参数定位到需要提取的表格节点即可
  • 处理第二批Strict Open XML格式文件时,仅需修改脚本中的后缀判断条件为对应文件后缀即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:24:02