如何用Python将指定XML文件解析转换为XLSX文件
将指定XML转换为XLSX文件的实现方案
首先需要修正你提供的XML中的语法错误:原XML里的?\>、obs id="0"\>、</obs\>这类写法里多余的反斜杠需要去掉,修正后的合法XML如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <obs id="0"> <dim name="Column1" value="a"/> <dim name="Column2" value="b"/> </obs> <obs id="1"> <dim name="Column1" value="tr"/> <dim name="Column2" value="yu"/> </obs>
下面用Python结合标准XML解析库和openpyxl库实现转换,步骤清晰且易复用:
实现步骤
- 安装依赖库(未安装过的话执行):
pip install openpyxl
- 编写转换代码:
import xml.etree.ElementTree as ET from openpyxl import Workbook # 加载XML文件(如果是字符串形式,可替换为ET.fromstring(xml_str)) tree = ET.parse('input.xml') root = tree.getroot() # 提取表头:取第一个obs节点下的dim的name属性作为列名 headers = [dim.get('name') for dim in root.findall('./obs[1]/dim')] # 提取所有行数据 rows = [] for obs in root.findall('obs'): row_data = [dim.get('value') for dim in obs.findall('dim')] rows.append(row_data) # 创建XLSX文件并写入数据 wb = Workbook() ws = wb.active # 写入表头 ws.append(headers) # 逐行写入数据 for row in rows: ws.append(row) # 保存生成的XLSX文件 wb.save('output.xlsx')
代码说明
- 用
xml.etree.ElementTree解析XML,通过XPath定位obs和dim节点,提取所需属性值 - 用
openpyxl创建Excel工作簿,先写入表头再逐行填充数据 - 默认所有
obs节点下的dim数量、顺序完全一致;若存在不一致场景,可额外添加逻辑按表头匹配对应value
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

