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

news2024/12/23 15:40:07

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的转换
    • 标准XML文件转换Excel表格
    • 读取XML数据保存到Excel工作簿

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1038920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二维穿墙雷达CW112 的 优势

TFN CW112加固型二维定位穿墙雷达是一款综合UWB雷达和生物医学工程技术研制而成的人体目标探测装备。该产品可穿透建筑墙体等障碍物,实时获取其后方人体目标位置及数量等信息,具有穿透性强、轻质便携、可双手操控等特点,广泛应用于反恐处突、…

vue+element项目创建步骤

一、创建vue项目步骤 要创建一个Vue Element UI的项目,你可以按照以下步骤进行操作: 1.确保你已经安装了Node.js和npm(Node.js的包管理器)。你可以在命令行中运行以下命令来检查它们是否已经安装: node -vnpm -v2.使…

视频超过1g怎么压缩?分享简单的视频压缩方法

随着科技的发展,视频已经成为了我们日常生活中不可或缺的一部分。然而,有时候我们会遇到视频文件过大,无法顺利传输或存储的问题。那么,如何解决视频超过1g压缩的问题呢? #长假读书清单# 首先我们可以借助专业的压缩…

华为云云耀云服务器L实例评测|运行python脚本

目录 一、往期回顾二、华为云云耀云服务器L实例使用流程1、账号注册2、购买并配置云耀云服务器L实例3、登录并使用云耀云服务器L实例 三、为什么Python越来越火?四、使用宝塔运行Python脚本1、下载Python项目管理器2、上传项目到服务器3、添加项目4、安装requests启…

一文读懂Llama 2(从原理到实战)

简介 Llama 2,是Meta AI正式发布的最新一代开源大模型。 Llama 2训练所用的token翻了一倍至2万亿,同时对于使用大模型最重要的上下文长度限制,Llama 2也翻了一倍。Llama 2包含了70亿、130亿和700亿参数的模型。Meta宣布将与微软Azure进行合…

便携式水质采样设备助力毒情监测

便携式水质采样设备助力毒情监测 污水涉毒采样检测工作是运用科技手段准确评估监测辖区内毒情形势的重要手段。期间,民警详细了解了生活和工业污水的处理、排放以及服务范围、人口数量等情况,并就污水涉毒采样检测工作达成共识。随后,民警严格…

【车载开发系列】ECU Application Software程序刷新步骤

【车载开发系列】ECU Application Software程序刷新步骤 ECU Application Software程序刷新步骤 【车载开发系列】ECU Application Software程序刷新步骤一. Boot Software(引导软件)1)boot manager(启动管理器)2&…

Flink1.12.7 Standalone版本安装

官网下载版本:https://archive.apache.org/dist/flink/flink-1.12.7/flink-1.12.7-bin-scala_2.12.tgz 可以从首页找到Downloads | Apache Flink,一直往下拉 安装:下载后直接解压即可 添加全局参数: #vi /etc/profile FLINK_HO…

云服务器免费体检

三丰云提供了免费云服务器与免费虚拟主机服务, 个人学习、搭建个人网站或者微信小程序调试等可以申请一台。 免费申请网址为: https://www.sanfengyun.com/ 还是挺方便的,大家可以体验体验。

【校招VIP】前端操作系统之I/O调度算法

考点介绍 I/O 调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。 前端操作系统之I/O调度算法-相关题目及解析内容可点击文章末尾链接查看! 一、考点题目 1. 某文件占10个…

Kafka的消息存储机制

前面咱们简单讲了K啊开发入门相关的概念、架构、特点以及安装启动。 今天咱们来说一下它的消息存储机制。 前言: Kafka通过将消息持久化到磁盘上的日志文件来实现高吞吐量的消息传递。 这种存储机制使得Kafka能够处理大量的消息,并保证消息的可靠性。 1…

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例 准备条件: PLC:S7-1200 1214C DC/DC/DC 系统版本4.5及以上。 机器人控制柜:安川YRC1000。 软件:TIA V17 PLC做主站,机器人做从站。 具体方法可参考以下内容: 使用的库文件为西门子 1200系列…

[React] react-hooks如何使用

react-hooks思想和初衷,也是把组件,颗粒化,单元化,形成独立的渲染环境,减少渲染次数,优化性能。 文章目录 1.为什么要使用hooks2.如何使用hooks2.1 useState2.2 useEffect2.3 useLayoutEffect2.4 useRef2.5…

【前段基础入门之】=>HTML5 的新增特性!

这里写目录标题 HTML5简介HTML5 优势新增语义化标签新增布局标签新增状态标签meter 标签progress 标签 新增列表标签新增文本标签文本注音文本标记 新增表单功能表单控件新增属性input 新增属性值form 标签新增属性 新增多媒体标签视频播放标签音乐播放标签 新增全局属性&#…

ICCV 2023 | 噪声关联鲁棒的图匹配方法

©PaperWeekly 原创 作者 | 林义杰 单位 | 四川大学 研究方向 | 多模态、多视角学习 论文标题: Graph Matching with Bi-level Noisy Correspondence 论文地址: https://arxiv.org/pdf/2212.04085.pdf 开源代码: https://github.com/XLe…

word文档莫名其妙的丢失了怎么办?7个方案恢复

不知道你是否曾经遇到过相似的情况:花费了数小时甚至数天编辑的Word文档,却莫名其妙的丢失了。这时的心情可能非常复杂。如果你不知道该怎么办,以下是几种恢复方案,希望能对你有所帮助! 关于Word文档 Word文档通常是由…

Vue路由与nodejs下载安装及环境变量的配置

目录 前言 一、Vue路由 1.路由简介 是什么 作用 应用场景 2.SPA简介 SPA是什么 SPA的优点 注意事项 3.路由实现思路 1.引入路由的js依赖 2.定义组件 3.定义组件与路径的对应关系 4.通过路由关系获取路由对象router 5.将路由对象挂载到实例中 6.触发路由事…

学生选课系统基础版

目录 一.Java 中的集合框架(上) 1.Java中的集合框架概述 2.Collection接口&接口简介 3.学生选课——创建学生类和课程类 4.学生选课——添加课程Ⅰ 5.学生选课——添加课程Ⅱ 6.学生选课——课程查询 7.学生选课——课程修改 8.学生选课——课程删…

Java日志源码详解,SpringBoot日志 slf4j、logback、log4j

日志视频讲解—上日志视频讲解—下学习文档集合 一、前提 在Java中说起日志,定听过这样几个名词:slf4j、logback、log4j,在正式开始之前,先了解几个简单的概念 slf4j、logback、log4j 的作者都是一个人slf4j 的全名是 Simple Log…