使用Python写入JSON、XML和YAML数据到Excel文件

在当今数据驱动的技术生态中,JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体。然而,当需要将这类半结构化数据转化为具备直观可视化、动态计算和协作共享特性的载体时,Excel文件因其在商业分析、科研管理和跨部门协作中的不可替代性,成为数据落地的终极界面。通过Python实现这一转换过程,不仅能突破不同数据范式间的语义鸿沟,更可构建自动化数据管道,在保留原始数据完整性的同时,赋予其动态排序、公式计算和数据透视等增值能力。本文将介绍如何使用Python导入JSON、XML和YAML格式数据到Excel文件中。

文章目录

    • 如何使用Python写入数据到Excel工作表
    • 用Python导入JSON数据到Excel工作表
      • 代码示例:
    • 用Python导入XML数据到Excel工作表
      • 代码示例:
    • 用Python导入YAML数据到Excel工作表
      • 代码示例:

本文所使用的数据写入方法需要用到Free Spire.XLS for Python,PyPI:pip install spire.xls.free


如何使用Python写入数据到Excel工作表

我们可以使用Free Spire.XLS for Python提供的类、属性和方法来创建或载入Excel文件,并处理数据到单元格的写入以及工作表格式设置等操作。以下是操作步骤示例:

  1. 创建Workbook实例以新建Excel工作簿(新建的工作簿会有三个默认工作表),或使用Workbook.LoadFromFile()方法载入已有工作簿。
  2. 使用Workbook.Worksheets.get_Item()方法获取指定工作表,或使用Workbook.Worksheets.Add(sheetName: str)方法直接新建工作表。
  3. 通过json、xml.etree.ElementTree和yaml组件读取相应数据。
  4. 使用Worksheet.Range.get_Item()方法获取指定单元格为CellRange对象,并使用CellRange.Value属性讲数据写入单元格中。
  5. 使用CellRange.BuiltInStyleCellRange.ApplyStyle()Worksheet.AutoFitColumn()等属性和方法,对工作表及单元格格式进行设置。
  6. 使用Workbook.SaveToFile()方法保存Excel工作簿到文件。

用Python导入JSON数据到Excel工作表

JSON是一种轻量级数据交换格式,常用于Web应用中前后端数据传输。在Python中,我们可以使用标准库中的json内置组件来解析JSON文件,并提取其中数据。提取到数据之后,我们可以使用Spire.XLS for Python将其写入Excel工作表并自定义格式,完成JSON数据到Excel文件的导入。

代码示例:

# 导入所需库
from spire.xls import Workbook, FileFormat, BuiltInStyles
import json# 读取并解析JSON订单数据
with open("E-Commerce Order Data.json", "r", encoding="utf-8") as f:jsonData = json.load(f)# 定义Excel列标题
headers = ["order_id", "customer", "order_date", "status", "total", "product", "quantity", "price"]# 将嵌套的JSON结构转换为扁平化表格数据
rows = []
for order in jsonData:for item in order["items"]:# 合并订单主数据和商品明细数据row = [order["order_id"], order["customer"], order["order_date"],order["status"], str(order["total"]), item["product"],str(item["quantity"]), str(item["price"])]rows.append(row)# 初始化Excel工作簿和工作表
workbook = Workbook()
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("Orders")# 写入表头到首行
for col, header in enumerate(headers):sheet.Range[1, col + 1].Value = header# 写入数据行内容
for row_idx, row_data in enumerate(rows):for col_idx, value in enumerate(row_data):sheet.Range[row_idx + 2, col_idx + 1].Value = value# 设置表格样式
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading2  # 标题行样式
for row in range(1, sheet.Rows.Count):sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent2_40  # 数据行样式# 自动调整列宽
for col in range(sheet.Columns.Count):sheet.AutoFitColumn(col + 1)# 保存并释放资源
workbook.SaveToFile("output/JSONToExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()

💡为了演示清晰,以上代码直接基于已知的字段结构进行提取。在实际项目中,建议根据具体的数据格式动态处理字段,或增加容错逻辑以应对结构变动。

JSON文件
Python读取JSON数据

输出Excel文件
Python导入JSON数据到Excel文件


用Python导入XML数据到Excel工作表

XML是一种标记语言,适合表示结构复杂的数据,支持丰富的功能(如属性、注释)。同样,Python标准库也提供了xml.etree.ElementTree组件,可以帮助我们提取XML文件中的数据。我们可以使用该组件搭配Free Spire.XLS for Python来实现导入XML数据到Excel文件。

代码示例:

# 导入XML处理库和Excel操作库
import xml.etree.ElementTree as ET
from spire.xls import Workbook, FileFormat, BuiltInStyles# 解析XML变更日志文件
tree = ET.parse("Software Manual Changelog.xml")
root = tree.getroot()# 定义表格列标题
headers = ["version", "date", "editor", "change"]
rows = []# 提取并转换XML数据结构
for entry in root.findall("entry"):# 提取公共字段version = entry.findtext("version", "")date = entry.findtext("date", "")editor = entry.findtext("editor", "")# 展开多个变更条目为独立行for change in entry.find("changes").findall("change"):rows.append([version, date, editor, change.text.strip()])# 创建Excel工作簿
workbook = Workbook()
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("Changelog")# 写入表格标题行
for col, header in enumerate(headers):sheet.Range[1, col + 1].Value = header# 填充变更记录数据
for row_idx, row_data in enumerate(rows):for col_idx, value in enumerate(row_data):sheet.Range[row_idx + 2, col_idx + 1].Value = value# 应用样式模板
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading1  # 主标题样式
for row in range(1, sheet.Rows.Count):sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent1_40  # 交替行底色# 自适应列宽设置
for col in range(sheet.Columns.Count):sheet.AutoFitColumn(col + 1)# 输出文件并释放资源
workbook.SaveToFile("output/XMLToExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()

💡为了演示清晰,以上代码直接基于已知的字段结构进行提取。在实际项目中,建议根据具体的数据格式动态处理字段,或增加容错逻辑以应对结构变动。

XML文件:
Python读取XML数据

输出的Excel文件
Python导入XML数据到Excel文件


用Python导入YAML数据到Excel工作表

YAML是一种简洁易读的配置文件格式,常用于DevOps和项目配置。虽然YAML通常不用于存储表格型数据,但很多结构化配置可转换成Excel表做审阅、记录或共享等,在这些实际场景中非常实用。我们可以使用Python标准库中的yaml组件处理YAML文件数据,然后将其导入Excel文件中。

代码示例:

# 导入YAML处理库和Excel操作库
import yaml
from spire.xls import Workbook, FileFormat, BuiltInStyles# 加载CI/CD流水线配置文件
with open("CI CD Pipeline Configuration.yaml", "r", encoding="utf-8") as f:yaml_data = yaml.safe_load(f)  # 安全解析YAML内容# 定义流水线分析报表列结构
headers = ["stage", "command", "output_file", "coverage", "environment"]
rows = []# 展开流水线阶段的多维数据
for stage in yaml_data["stages"]:# 提取阶段基础信息name = stage.get("name", "")commands = stage.get("commands", [])coverage = str(stage.get("coverage", ""))  # 数值转字符串environment = stage.get("environment", "")outputs = stage.get("artifacts", []) or [""]  # 处理空输出文件情况# 按命令展开明细行for i, cmd in enumerate(commands):# 合并数据时保持指标数据首行展示row = [name,cmd,outputs[i] if i < len(outputs) else "",  # 匹配命令与产出文件coverage if i == 0 else "",  # 覆盖率仅首行保留environment if i == 0 else ""  # 环境信息仅首行保留]rows.append(row)# 创建报表工作簿
workbook = Workbook()
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("Pipeline")# 构建表头结构
for col, header in enumerate(headers):sheet.Range[1, col + 1].Value = header# 填充动态生成的流水线数据
for row_idx, row_data in enumerate(rows):for col_idx, value in enumerate(row_data):sheet.Range[row_idx + 2, col_idx + 1].Value = str(value)  # 强制转为字符串格式# 应用阶梯式样式方案
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading4  # 深色渐变标题
for row in range(1, sheet.Rows.Count):sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent2_40  # 浅色交替行背景# 优化列显示宽度
for col in range(sheet.Columns.Count):sheet.AutoFitColumn(col + 1)# 持久化报表文件
workbook.SaveToFile("output/YAMLToExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()

💡为了演示清晰,以上代码直接基于已知的字段结构进行提取。在实际项目中,建议根据具体的数据格式动态处理字段,或增加容错逻辑以应对结构变动。
YAML文件
Python读取YAML数据

输出的Excel文件
Python导入YAML数据到Excel文件


本文演示如何导入数据到Excel文件,包括JSON、XML和YAML数据到Excel工作表的导入,提供步骤介绍及代码示例。

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

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

相关文章

面试题:Eureka和Nocas的区别

Eureka 与 Nacos 核心区别对比 一、功能定位与核心能力 ‌维度‌‌Eureka‌‌Nacos‌‌核心功能‌专注服务注册与发现&#xff0c;无配置管理功能‌:ml-citation{ref“1,3” data“citationList”}集成服务注册、发现、配置管理、动态DNS等‌:ml-citation{ref“1,3” data“c…

2025年4月15日 百度一面 面经

目录 1. 代理相关 从静态代理到动态代理 2. cglib可以代理被final修饰的类吗,为什么 3. JVM 体系结构 4. 垃圾回收算法 5. 什么是注解 如何使用 底层原理 6. synchronized和reentrantlock 7. 讲一下你项目中 redis的分布式锁 与java自带的锁有啥区别 8. post 请求和 ge…

AI改变生活

AI改变生活 人工智能&#xff08;AI&#xff09;在我们生活中的应用越来越广泛&#xff0c;深刻地改变了我们的工作和生活方式。以下是一些AI实际应用的实例&#xff0c;以及它们如何影响我们的日常生活。 1. 智能助手 智能助手如Siri、Alexa和Google Assistant等&#xff0…

信奥赛之c++基础(取模运算与数位分离)

🎮 数字拆解大冒险——取模运算与数位分离魔法课 🍬 第一章:糖果分装术——取模运算 🍭 分糖果游戏 7颗糖每人分3颗: 每人得到:7 / 3 = 2颗剩余糖果:7 % 3 = 1颗(%就是取模符号) 就像把糖果装袋后剩下的零散糖粒!🔧 取模运算说明书 算式比喻结果10 % 310颗糖分…

揭秘大数据 | 21、软件定义计算

老夫先将这个小系列的前两篇内容链接奉上&#xff0c;方便感兴趣的朋友一气读之。 揭秘大数据 | 19、软件定义的世界-CSDN博客 揭秘大数据 | 20、软件定义数据中心-CSDN博客 今天&#xff0c;书接上文&#xff0c;开聊软件定义计算的那些事儿&#xff01; 虚拟化是软件定义…

FPGA-DDS技术的波形发生器

1.实验目的 1.1掌握直接数字频率合成&#xff08;DDS&#xff09;的基本原理及其实现方法。 1.2在DE2-115 FPGA开发板上设计一个可调频率的正弦波和方波发生器&#xff0c;频率范围10Hz~5MHz&#xff0c;最小分辨率小于1kHz。 1.3使用Quartus II进行仿真&#xff0c;并通过S…

LeetCode[541]反转字符串Ⅱ

思路&#xff1a; 题目给我们加了几个规则&#xff0c;剩余长度小于2k&#xff0c;大于等于k就反转k个&#xff0c;小于k就全部反转&#xff0c;我们按照这个逻辑来就行。 第一就是大于等于k就反转k个&#xff0c;我们for循环肯定是i2k了&#xff0c;接下来就是判断是否大于等于…

实现定长的内存池

池化技术 所谓的池化技术&#xff0c;就是程序预先向系统申请过量的资源&#xff0c;然后自己管理起来&#xff0c;以备不时之需。这个操作的价值就是&#xff0c;如果申请与释放资源的开销较大&#xff0c;提前申请资源并在使用后并不释放而是重复利用&#xff0c;能够提高程序…

路由器原理与配置技术详解

一、路由基础原理 1.1 路由器的核心功能 网络层设备&#xff1a;工作在OSI参考模型第三层&#xff0c;实现不同网络间的互联互通智能路径选择&#xff1a;基于路由表为数据包选择最优传输路径协议转换&#xff1a;处理不同网络接口间的协议差异&#xff08;如以太网与PPP&…

Leetcode 3518. Smallest Palindromic Rearrangement II

Leetcode 3518. Smallest Palindromic Rearrangement II 1. 解题思路2. 代码实现 题目链接&#xff1a;Leetcode 3518. Smallest Palindromic Rearrangement II 1. 解题思路 这一题是题目Leetcode 3517. Smallest Palindromic Rearrangement I的升级版本&#xff0c;其主要的…

大模型——Crawl4AI 中的数据提取策略

大模型——Crawl4AI 中的数据提取策略 在本章中,将详细介绍在 Crawl4AI 中可用的数据提取策略。这些策略包括: LLMExtractionStrategy:用于详细内容提取。JsonCssExtractionStrategy:使用 CSS 选择器进行结构化数据检索。CosineStrategy:基于余弦相似性进行有效的语义分段…

职坐标解码互联网行业转型发展新动能

当前&#xff0c;互联网行业正以前所未有的速度重塑全球产业格局。工信部最新数据显示&#xff0c;我国互联网企业营收连续三年保持双位数增长&#xff0c;其中百强企业在人工智能、物联网等领域的投入强度同比提升40%&#xff0c;展现出强劲的技术引领力。与此同时&#xff0c…

linux多线(进)程编程——(4)进程间的传音术(命名管道)

前言&#xff08;前情回顾&#xff09; 进程君&#xff08;父进程&#xff09;在开发出匿名管道这门传音术后&#xff0c;解决了和自己孩子&#xff08;子进程&#xff09;间的沟通问题&#xff0c;父子关系趋于融洽。和孩子沟通后&#xff0c;进程君发现&#xff0c;自己脱离…

在IDEA里面建立maven项目(便于java web使用)

具体步骤&#xff1a; 第一次有的电脑你再创建项目的时候右下角会提醒你弹窗&#xff1a;让你下载没有的东西 一定要下载&#xff01;&#xff01;可能会很慢 运行结果&#xff1a; 因为他是默认的8080端口所以在运行的时候输入的url如下图&#xff1a; 新建了一个controller代…

【13】数据结构之树结构篇章

目录标题 树Tree树的定义树的基本概念树的存储结构双亲表示法孩子表示法孩子兄弟表示法 二叉树二叉树与度不超过&#xff12;的普通树的不同之处二叉树的基本形态二叉树的分类二叉树的性质 二叉树的顺序存储二叉树的链式存储二叉树的链式存储的结点结构树的遍历先序遍历中序遍历…

雷达生命探测仪,地震救援的生命探测先锋|鼎跃安全

在地震、山体滑坡、坍塌建筑等突发灾害中&#xff0c;会严重摧毁建筑物&#xff0c;造成倒塌和人员被困&#xff1b;在瓦砾堆、混凝土板层中&#xff0c;受困人员的生命安全常常面临严峻威胁。传统救援手段通常存在响应时间长、监测精度有限等不足。 救援现场往往环境复杂&…

512天,倔强生长:一位技术创作者的独白

亲爱的读者与同行者&#xff1a; 我是倔强的石头_&#xff0c;今天是我在CSDN成为创作者的第512天。当系统提示我写下这篇纪念日文章时&#xff0c;我恍惚间想起了2023年11月19日的那个夜晚——指尖敲下《开端——》的标题&#xff0c;忐忑又坚定地按下了“发布”键。那时的我…

数据结构*集合框架顺序表-ArrayList

集合框架 常见的集合框架 什么是顺序表 顺序表是一种线性表数据结构&#xff0c;它借助一组连续的存储单元来依次存储线性表中的数据元素。一般情况下采用数组存储。 在数组上完成数据的增删查改。 自定义简易版的顺序表 代码展示&#xff1a; public interface IArray…

使用openpyxl时的一些注意点

一、是否需要close()&#xff1f; 在使用 openpyxl 时&#xff0c;wb.save() 后一般不需要再手动调用 wb.close()。wb.save() 会自动处理文件写入和释放。 如果是使用openpyxl.load_workbook(filename, read_onlyTrue) 打开了一个只读模式的工作簿&#xff0c;此时会建立文件…

Python爬虫第11节-解析库Beautiful Soup的使用上篇

目录 前言 一、Beautiful Soup 简介 1.1 Beautiful Soup概述 1.2 准备工作 1.3 解析器 二、基本使用 三、节点选择器的使用 3.1 选择元素 3.2 提取信息 3.2.1 获取名称 3.2.2 获取属性 3.2.3 获取内容 3.3 嵌套选择 3.4 关联选择 3.4.1 子节点和子孙节点 3.4.2…