用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

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文件互转
转换结果
Excel表格转XML

标准XML文件转换Excel表格

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

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

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表格

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

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

详细操作步骤如下:

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

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表格

以上是关于XML和Excel表格之间相互转换的介绍。Spire.XLS for Python还有许多其他功能,可前往Spire.XLS for Python教程了解更多。

你可以使用Python中的xml.etree.ElementTree模块来解析XML,并使用第三方库如openpyxl来创建和操作Excel文件。下面是一个示例代码,演示了如何解析XML并将其内容输出到Excel文件中: ```python import xml.etree.ElementTree as ET from openpyxl import Workbook def parse_xml(xml_file): # 创建一个Workbook对象 wb = Workbook() # 获取默认的活动工作表 sheet = wb.active # 解析XML文件 tree = ET.parse(xml_file) root = tree.getroot() # 遍历XML元素并将内容写入Excel表格 for child in root: row_data = [] for sub_child in child: row_data.append(sub_child.text) sheet.append(row_data) # 保存Excel文件 wb.save('output.xlsx') # 调用解析函数并传入XML文件路径 parse_xml('input.xml') ``` 在上述代码中,我们首先导入`xml.etree.ElementTree`模块来解析XML文件,然后导入`openpyxl`库来进行Excel操作。`parse_xml`函数接受一个XML文件路径作为参数,它会打开该文件并解析其内容。 接下来,我们创建一个`Workbook`对象,并获取默认的活动工作表。然后,我们使用`ET.parse`函数解析XML文件,并通过`getroot()`方法获取根元素。 然后,我们遍历XML元素并将每个子元素的文本内容添加到一个列表中。最后,将该列表作为一行数据添加到Excel表格中。 最后,我们使用`wb.save()`方法保存Excel文件,并命名为`output.xlsx`。 请确保您已经安装了`openpyxl`库,您可以使用以下命令进行安装: ``` pip install openpyxl ``` 请注意,这只是一个简单的示例代码,您可能需要根据您的实际需求进行适当的修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值