Python数据处理 XML与Excel互转实用指南
在日常工作中,XML 与 Excel 的相互转换是一项常见需求。XML 作为结构化数据交换的标准格式,而 Excel 则是业务人员最熟悉的表格工具。那么,如何利用 Python 实现两者之间的灵活转换呢?本文将详细介绍具体方法。 理解 XML 的基本结构 在进行转换之前,先了解 XML 的基本结构,
在日常工作中,XML 与 Excel 的相互转换是一项常见需求。XML 作为结构化数据交换的标准格式,而 Excel 则是业务人员最熟悉的表格工具。那么,如何利用 Python 实现两者之间的灵活转换呢?本文将详细介绍具体方法。

理解 XML 的基本结构
在进行转换之前,先了解 XML 的基本结构,有助于将 XML 数据映射到 Excel 表格。XML 文档主要由以下三种元素构成:
-
元素(Element):XML 的基本构建块,由开始标签、结束标签及其包含的内容组成。例如:
表示一个名为 name 的元素,其值为"张三"。张三 -
属性(Attribute):在元素的开始标签中以名称-值对的形式提供额外信息。例如:
中的id="1"就是一个属性。 -
数据(Data):包含在元素的开始和结束标签之间的具体内容。
理解这些之后,将 XML 数据导入 Excel 的行列结构就变得非常直观了。
环境准备
这里推荐一个独立的 Excel 处理库,无需安装 Microsoft Office,特别适合部署在服务器端或自动化任务中。安装简单,使用 pip 即可:
复制代码pip install Spire.XLS
该库还依赖 plum-dispatch,安装时会自动处理,无需额外操作。
将 XML 转换为 Excel
将 XML 数据导入 Excel 的核心思路比较简单:先用 Python 标准库解析 XML,提取出结构化数据,再借助 Excel 处理库将数据写入工作表中。按步骤操作即可。
操作步骤
- 使用
xml.etree.ElementTree模块解析 XML 文件,获取根节点 - 遍历 XML 树,提取表头和数据行
- 创建 Workbook 对象,获取或添加工作表
- 将表头和数据按行列写入单元格
- 应用样式(如字体加粗、自动列宽)以改善可读性
- 保存为 Excel 文件
代码示例
复制代码from spire.xls import Workbook, FileFormat, BuiltInStyles
import xml.etree.ElementTree as ET# 1. 加载并解析 XML 文件
tree = ET.parse("消费记录.xml")
root = tree.getroot()# 2. 提取表头(以第一个记录节点为准)
first_item = root.find("Record")
headers = [elem.tag for elem in first_item]# 3. 提取所有数据行
rows = []
for record in root.findall("Record"):
row_data = []
for header in headers:
elem = record.find(header)
row_data.append(elem.text if elem is not None else "")
rows.append(row_data)# 4. 创建 Excel 工作簿并清除默认工作表
workbook = Workbook()
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("XML数据")# 5. 写入表头(第1行)
for col_idx, header in enumerate(headers, start=1):
sheet.Range[1, col_idx].Value = header# 6. 写入数据行(从第2行开始)
for row_idx, row_data in enumerate(rows, start=2):
for col_idx, value in enumerate(row_data, start=1):
sheet.Range[row_idx, col_idx].Value = value# 7. 应用样式
# 表头加粗
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading3
# 自动调整列宽
for col in range(sheet.Columns.Count):
sheet.AutoFitColumn(col + 1)# 8. 保存文件
workbook.Sa veToFile("XML转Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
代码说明
ET.parse()用于加载 XML 文件,root.findall()和root.find()用于定位节点。Workbook.Worksheets.Clear()用于移除新建工作簿时默认的三个空白工作表,以便创建自定义工作表。Worksheet.Range[row, col].Value属性用于向指定单元格写入数据。BuiltInStyles提供了 Excel 内置样式,可快速美化表格外观。AutoFitColumn()根据内容自动调整列宽,提高表格可读性。
将 Excel 转换为 XML
反向操作——将 Excel 中的数据导出为 XML 格式——在实际工作中同样常见。例如,业务人员整理好数据后,需要导出为符合特定 Schema 的 XML 文件,供上游系统对接使用。
有些 Excel 处理库提供了直接的方法将工作簿保存为 Open XML 格式(即 Excel 自身底层的 XML 格式)。但如果需要生成自定义结构的 XML,则需要手动读取 Excel 数据并构建 XML 树。
直接转换为 Open XML
如果只是想把 Excel 文件转换为其底层的 Open XML 格式,代码非常简洁:
复制代码from spire.xls import Workbook# 加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("数据.xlsx")# 保存为 Open XML 格式
workbook.Sa veAsXml("Excel转XML.xml")
workbook.Dispose()
自定义 XML 结构导出
如果需要生成特定结构的 XML 文件,则从 Excel 中读取数据后,用 xml.etree.ElementTree 构建自定义 XML:
复制代码from spire.xls import Workbook
import xml.etree.ElementTree as ET
from xml.dom import minidom# 1. 读取 Excel 数据
workbook = Workbook()
workbook.LoadFromFile("数据.xlsx")
sheet = workbook.Worksheets[0]# 2. 提取表头和数据
headers = [sheet.Range[1, col+1].Value for col in range(sheet.Columns.Count)]
rows = []
for row in range(2, sheet.Rows.Count + 1):
row_data = {}
for col in range(sheet.Columns.Count):
row_data[headers[col]] = sheet.Range[row, col+1].Value
rows.append(row_data)
workbook.Dispose()# 3. 构建 XML 树
root = ET.Element("Records")
for row in rows:
record = ET.SubElement(root, "Record")
for key, value in row.items():
elem = ET.SubElement(record, key)
elem.text = str(value) if value is not None else ""# 4. 格式化并保存 XML
xml_str = ET.tostring(root, encoding="utf-8")
dom = minidom.parseString(xml_str)
with open("数据.xml", "w", encoding="utf-8") as f:
f.write(dom.toprettyxml(indent=" "))
这种方式的灵活性更高,完全可以按照业务需求定义 XML 的结构和标签名称。
关于数据类型的注意事项
在 XML 转 Excel 的过程中,从 XML 中读取的所有数据默认都是字符串类型。如果数据包含数值、日期等类型,写入 Excel 后可能需要手动设置单元格格式。反过来,Excel 转 XML 时,从单元格读取的值需要转换为字符串再写入 XML 节点,对于空值也要做适当处理,避免生成空的 XML 节点。
输出格式与适用场景
在实际项目中,XML 与 Excel 的转换需求可能来自不同角色:数据分析人员需要将 XML 导入 Excel 进行透视和可视化;开发人员则需要将 Excel 数据导出为 XML 用于接口对接或数据交换。本文介绍的两种方案都不依赖 Microsoft Office,适合部署在服务器端或自动化任务中,稳定可靠。
小结
通过 Python 标准库中的 xml.etree.ElementTree 配合 Excel 处理库,可以灵活实现 XML 与 Excel 之间的双向转换。XML 转 Excel 的核心是解析 XML 树并写入表格;Excel 转 XML 则既可以直接保存为 Open XML 格式,也可以根据业务需求自定义 XML 结构。开发者可根据实际场景选择合适的方案进行适配。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
FileZilla断点续传设置与操作指南
FileZilla支持断点续传,需客户端与服务器均开启REST命令。设置中确保启用断点续传及继续传输选项。中断后自动或手动从断点恢复。注意服务器支持、传输模式匹配及文件完整性校验。
Debian系统C++编译器位置查找方法
在Debian系统中,通过apt安装的C++编译器g++默认位于 usr bin g++,可使用which或whereis命令验证路径。g++属于build-essential软件包,若未安装则需执行sudoaptinstallbuild-essential。该包还包含gcc、make等编译工具链,g++是GNUC++编译器,实际是符号链接指向具体版本,验证
Debian系统安装C++环境的方法
在Debian系统安装C++开发环境:先sudoaptupdate更新包列表,再sudoaptinstallbuild-essential安装编译工具链,或单独安装g++。用g++--version验证。可选安装VSCode、GDB、CMake等工具并配置默认编译器版本。
Debian系统C++开发环境配置指南
在Debian系统中,先执行aptupdate更新软件包列表,再安装build-essential元包即可获得GCC、G++、Make和GDB。通过运行g++--version命令验证编译器安装成功。可选安装VisualStudioCode、CLion等编辑器及CMake构建工具,并编写一个简单的HelloWorld程序,使用g++编译运行以验证环境配置正确
通过cpustat工具查看CPU状态的具体方法与详细步骤
cpustat是sysstat包中的CPU监控工具,可按固定间隔输出带时间戳的CPU使用率统计。安装后运行cpustat即可实时显示各核心信息,常用指标包括%usr、%sys、%iowait、%steal和%idle,用于定位用户态、内核态或I O瓶颈。高级选项-c可显示单核统计,-m可同时查看内存使用,适合脚本采集和性能分析。
- 热门数据榜
相关攻略
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:18
2026-07-25 22:18
2026-07-25 22:18
2026-07-25 22:18
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

