使用Python指定模块解析XML并生成含指定列的Excel表格
解决方案:解析XML并生成Excel表格
首先确保安装了openpyxl库,因为它不是Python标准库:
pip install openpyxl
以下是完整的实现代码,涵盖XML解析、数据提取和Excel生成的全部流程:
import xml.etree.ElementTree as ET from openpyxl import Workbook # 解析XML文件 tree = ET.parse('input.xml') # 替换为你的XML文件路径 root = tree.getroot() # 准备存储数据的列表 items_data = [] # 遍历所有itemlist节点,提取数据 for itemlist in root.findall('.//itemlist'): # 使用XPath匹配所有层级的itemlist节点 item_id = itemlist.find('ID').text if itemlist.find('ID') is not None else '' name = itemlist.find('NAME').text if itemlist.find('NAME') is not None else '' product_nr = itemlist.find('PRODUCTNR').text if itemlist.find('PRODUCTNR') is not None else '' items_data.append({ 'id': item_id, 'name': name, 'productnr': product_nr }) # 创建Excel工作簿和工作表 wb = Workbook() ws = wb.active ws.title = 'Items' # 写入表头 headers = ['id', 'name', 'productnr'] ws.append(headers) # 写入每行数据 for item in items_data: ws.append([item['id'], item['name'], item['productnr']]) # 保存Excel文件 wb.save('output.xlsx') # 替换为你想要的输出文件路径
代码说明:
- XML解析:用
ET.parse()加载XML文件,通过XPath表达式.//itemlist匹配所有层级下的itemlist节点,避免遗漏嵌套在其他节点内的目标数据。 - 数据提取:对每个
itemlist节点,用find()查找子节点,通过if ... is not None判断节点是否存在,防止因缺失节点报错,缺失时用空字符串填充。 - Excel操作:创建新工作簿后激活默认工作表并设置标题,先写入表头,再循环将提取的字典数据转为列表写入,最后保存文件。
注意事项:
- 替换代码中的
input.xml和output.xlsx为实际文件路径。 - 如果XML中节点名称有大小写差异(比如
id而非ID),需对应调整代码中的节点查找字符串。
内容的提问来源于stack exchange,提问作者Anjali Sinha
相关产品推荐
相关产品推荐

