赞
踩
XML是一种超文本标记语言和文件格式,具有可自定义标签,易于扩展,便于编辑,传输便捷等优点。XML已成为应用数据交换的常用方式。虽然XML格式易于传输和开发者操作,但对于普通用户来说,数据以xls或xlsx的形式呈现更易阅读和编辑。本篇文章将分享如何使用Python在XML文件和Excel表之间实现互转。
本文使用Spire.XLS for Python工具实现转换,可以从官方网站下载,或通过pip进行安装(同时需要安装Dispatch 1.7.4):
pip install Spire.XLS-for-Python
pip install plum-dispatch==1.7.4
我们可以使用 SaveAsXML(fileName: str) 方法或 SaveToFile(fileName: str, FileFormat.XML) 方法将Excel工作簿转换为XML文件。注意,转换后只有字体、字号等样式信息会被保留。具体的步骤如下:
Python
from spire.xls import *
from spire.common import *
# 创建 Workbook 对象
workbook = Workbook()
# 从文件加载 Excel 表格
workbook.LoadFromFile("示例.xlsx")
# 将工作簿保存为 XML 文件
workbook.SaveAsXml("output/XLSX转XML.xml")
# workbook.SaveToFile("output/XLSX转XML.xml", FileFormat.XML)
## 将标准XML文
原工作簿
转换结果
如果是符合Excel标准的XML文件,可直接转换为工作簿。操作步骤如下:
Python
from spire.xls import *
from spire.common import *
# 创建 Workbook 类的对象
workbook = Workbook()
# 从 XML 文件加载数据
workbook.LoadFromXml("XML表格.xml")
# 将 XML 文件转换为 Excel 工作簿并保存
workbook.SaveToFile("output/XML转XLSX.xlsx", FileFormat.Version2016)
转换结果
如果是不符合Excel标准的XML数据,则可以通过读取其中的数据并保存到Excel工作簿中来实现转换。
用于操作的XML文件:
详细操作步骤如下:
Python
from spire.xls import * from spire.common import * import xml.etree.ElementTree as ET # 创建一个Workbook类的对象 workbook = Workbook() # 加载 XML 数据 xml_tree = ET.parse("示例.xml") xml_root = xml_tree.getroot() # 获取第一个order节点来确定列数和表头 first_student = xml_root.find("order") header = list(first_student.iter())[1:] # 跳过第一个节点 # 定义英文和中文标签的映射关系 label_mapping = { "order_number": "订单编号", "date": "日期", "product_name": "产品名称", "unit_price": "单价", "quantity": "数量", "total_sales": "总销售额" } # 添加一个工作表并设置工作表名 worksheet = workbook.Worksheets[0] worksheet.Name = "销售数据跟踪" # 写入表头 for col_index, header_node in enumerate(header, start=1): header_text = header_node.tag chinese_label = label_mapping.get(header_text, header_text) worksheet.SetValue(1, col_index, chinese_label) # 写入订单数据 row_index = 2 for student in xml_root.iter("order"): for col_index, data_node in enumerate(list(student.iter())[1:], start=1): # 跳过第一个节点 value = data_node.text header_text = list(header[col_index - 1].iter())[0].tag chinese_label = label_mapping.get(header_text, header_text) worksheet.SetValue(row_index, col_index, value) row_index += 1 # 保存工作簿为新的 Excel 文件 workbook.SaveToFile("output/Excel工作簿.xlsx")
结果文件
以上是关于XML和Excel表格之间相互转换的介绍。Spire.XLS for Python还有许多其他功能,可前往Spire.XLS for Python教程了解更多。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。