用Python在XML和Excel表格之间实现互转

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

文章目录

从Excel电子表格到XML的转换

我们可以使用 SaveAsXML(fileName: str) 方法或 SaveToFile(fileName: str, FileFormat.XML) 方法将Excel工作簿转换为XML文件。注意,转换后只有字体、字号等样式信息会被保留。具体的步骤如下:

  • 实例化 Workbook 类。
  • 利用 Workbook.LoadFromFile() 方法加载Excel表格。
  • 通过 Wordbook.SaveAsXml() 方法或 Wordbook.SaveToFile() 方法将表格转换为XML文件并保存。

Python

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文

原工作簿

转换结果

标准XML文件转换Excel表格

如果是符合Excel标准的XML文件,可直接转换为工作簿。操作步骤如下:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.LoadFromXml() 方法载入XML文件
  • 使用 Workbook.SaveToFIle() 方法将XML文件转换为Excel工作簿并保存。

Python

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)

转换结果

读取XML数据保存到Excel工作簿

如果是不符合Excel标准的XML数据,则可以通过读取其中的数据并保存到Excel工作簿中来实现转换。

用于操作的XML文件:

详细操作步骤如下:

  • 创建一个 Workbook 类的对象。
  • 加载XML数据。
  • 获取第一个order节点来确定列数和表头。
  • 添加一个工作表并设置工作表名。
  • 使用 Worksheet.SetValue() 方法写入数据。
  • 使用 Workbook.SaveToFile() 方法保存工作簿为新的 Excel 文件。

Python

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教程了解更多。

相关推荐
无须logic ᭄2 分钟前
CrypTen项目实践
python·机器学习·密码学·同态加密
百流15 分钟前
scala文件编译相关理解
开发语言·学习·scala
Channing Lewis15 分钟前
flask常见问答题
后端·python·flask
Channing Lewis17 分钟前
如何保护 Flask API 的安全性?
后端·python·flask
水兵没月1 小时前
钉钉群机器人设置——python版本
python·机器人·钉钉
Evand J1 小时前
matlab绘图——彩色螺旋图
开发语言·matlab·信息可视化
我想学LINUX2 小时前
【2024年华为OD机试】 (A卷,100分)- 微服务的集成测试(JavaScript&Java & Python&C/C++)
java·c语言·javascript·python·华为od·微服务·集成测试
深度混淆2 小时前
C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
开发语言·c#
雁于飞2 小时前
c语言贪吃蛇(极简版,基本能玩)
c语言·开发语言·笔记·学习·其他·课程设计·大作业
wenxin-3 小时前
NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?
开发语言·matlab·画图·ns3·lr-wpan