当前位置: 首页 > article >正文

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

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

文章目录

    • 如何使用Python写入数据到Excel工作表
    • 用Python导入JSON数据到Excel工作表
      • 代码示例:
      • JSON文件:
      • 输出Excel文件:
    • 用Python导入XML数据到Excel工作表
      • 代码示例:
      • XML文件:
      • 输出的Excel文件:
    • 用Python导入YAML数据到Excel工作表
      • 代码示例:
      • 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工作表的导入,提供步骤介绍及代码示例。

相关文章:

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

在当今数据驱动的技术生态中&#xff0c;JSON、XML和YAML作为主流结构化数据格式&#xff0c;因其层次化表达能力和跨平台兼容性&#xff0c;已成为系统间数据交换的通用载体。然而&#xff0c;当需要将这类半结构化数据转化为具备直观可视化、动态计算和协作共享特性的载体时&…...

从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程

引言&#xff1a;AI对话系统的时代机遇 在数字化转型浪潮中&#xff0c;聊天机器人已成为连接用户与服务的关键纽带。无论是客服系统中的724小时即时响应&#xff0c;还是智能家居中的语音交互&#xff0c;聊天机器人正在重塑人机交互方式。本文将通过详细教程&#xff0c;手把…...

编码常见的 3类 23种设计模式——学习笔记

一、创建型(用于方便创建实例) 1. 单例模式 优点&#xff1a; 确保系统中只有一个实例存在&#xff0c;避免多个实例导致的资源冲突或数据不一致问题。例如&#xff0c;数据库连接池、线程池等全局资源管理器适合用单例实现。 减少频繁创建和销毁对象的开销&#xff0c;尤其适…...

# 实时人脸性别与年龄识别:基于OpenCV与深度学习模型的实现

实时人脸性别与年龄识别&#xff1a;基于OpenCV与深度学习模型的实现 在当今数字化时代&#xff0c;计算机视觉技术正以前所未有的速度改变着我们的生活与工作方式。其中&#xff0c;人脸检测与分析作为计算机视觉领域的重要分支&#xff0c;已广泛应用于安防监控、智能交互、…...

x-cmd install | Slumber - 告别繁琐,拥抱高效的终端 HTTP 客户端

目录 核心优势&#xff0c;一览无遗安装应用场景&#xff0c;无限可能示例告别 GUI&#xff0c;拥抱终端 还在为调试 API 接口&#xff0c;发送 HTTP 请求而苦恼吗&#xff1f;还在各种 GUI 工具之间切换&#xff0c;只为了发送一个简单的请求吗&#xff1f;现在&#xff0c;有…...

apijson 快速上手

apijson是强大的工具&#xff0c;简化了CRUD的操作&#xff0c;只要有数据库表&#xff0c;就能自动生成RESTFUL接口。但初次上手也是摸索了很长时间&#xff0c;尤其是部署与使用上&#xff0c;这里尝试以初学者角度来说下&#xff1a; 一、好处 1、对于简单的应用&#xff…...

3D激光轮廓仪知识整理

文章目录 1.原理和应用场景1.1 相机原理1.1.1 测量原理1.1.2 相机激光器1.1.3 沙姆镜头1.1.4 相机标定1.1.5 中心线提取 1.2 应用场景1.2.1 测量相关应用1.2.2 缺陷检测相关应用 2.相机参数介绍及选型介绍2.1 成像原理2.2 原始图成像2.3 生成轮廓图2.4 相机规格参数2.4.1 单轮廓…...

Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)

目录 &#x1f9e0; 前言 &#x1f9fe; 我的需求 &#x1f527; 实现过程&#xff08;按功能一步步来&#xff09; &#x1f6b6;‍♂️ Step 1&#xff1a;基本图像生成界面 &#x1f5c3;️ Step 2&#xff1a;保存图片并显示历史记录 &#x1f4cf; Step 3&#xff1a…...

使用WasmEdge将InternLM集成到Obsidian,打造本地智能笔记助手

本文来自社区投稿&#xff0c;作者Miley Fu&#xff0c;WasmEdge Runtime 创始成员。 本文将介绍如何通过 WasmEdge 将书生浦语&#xff08;InternLM&#xff09;大模型部署在本地&#xff0c;并与 Obsidian 笔记软件集成&#xff0c;从而在笔记软件中直接利用大模型实现文本总…...

深入理解Softmax函数及其在PyTorch中的实现

Softmax函数简介 Softmax函数在机器学习和深度学习中&#xff0c;被广泛用于多分类问题的输出层。它将一个实数向量转换为概率分布&#xff0c;使得每个元素介于0和1之间&#xff0c;且所有元素之和为1。 Softmax函数的定义 给定一个长度为 K K K的输入向量 z [ z 1 , z 2 …...

JGraphT 在 Spring Boot 中的应用实践

1. 引言 1.1 什么是 JGraphT JGraphT 是一个用于处理图数据结构和算法的 Java 库,提供了丰富的图类型和算法实现。 1.2 为什么使用 JGraphT 丰富的图类型:支持简单图、多重图、伪图等多种图类型。强大的算法库:提供最短路径、最小生成树、拓扑排序等多种算法。易于集成:…...

java导入excel更新设备经纬度度数或者度分秒

文章目录 一、背景介绍二、页面效果三、代码0.pom.xml1.ImportDevice.vue2.ImportDeviceError.vue3.system.js4.DeviceManageControl5.DeviceManageUserControl6.Repeater7.FileUtils8.ResponseModel9.EnumLongitudeLatitude10.词条 四、注意点本人其他相关文章链接 一、背景介…...

视频设备轨迹回放平台EasyCVR远程监控体系落地筑牢国土监管防线

一、背景概述 我国土地资源遭违法滥用的现象愈发严峻&#xff0c;各类土地不合理利用问题频发。不当的土地开发不仅加剧了地质危害风险&#xff0c;导致良田受损、森林资源的滥伐&#xff0c;还引发了煤矿无序开采、城市开发区违建等乱象&#xff0c;给国家宝贵的土地资源造成…...

tree-sitter 的 grammar.js 编写方法

tree-sitter 的 grammar.js 编写方法 一、grammar.js 的作用是什么&#xff1f;二、基本结构三、关键词解释四、编写小技巧1. 起点是 source_file2. 所有规则名&#xff08;如 identifier, number&#xff09;都是 $ > ...3. 正则表达式用于定义词法规则&#xff08;终结符&…...

Git 实践笔记

这里写自定义目录标题 一、将当前改动追加到某次commit上二、git 强制修改分支位置 一、将当前改动追加到某次commit上 stash工作区中的当前改动 git stash假设需要修改的commit是 f744c32&#xff0c;将HEAD移动到需要改动的commit的父提交上 git rebase f744c32^ --interact…...

【特权FPGA】之数码管

case语句的用法&#xff1a; 计数器不断的计数&#xff0c;每一个num对应数码管一种数据的输出。实例通俗易懂&#xff0c;一目了然。 timescale 1ns / 1ps// Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Project Name: //…...

Stable Diffusion 四重调参优化——项目学习记录

学习记录还原&#xff1a;在本次实验中&#xff0c;我基于 Stable Diffusion v1.5模型&#xff0c;通过一系列优化方法提升生成图像的质量&#xff0c;最终实现了图像质量的显著提升。实验从基础的 Img2Img 技术入手&#xff0c;逐步推进到参数微调、DreamShaper 模型和 Contro…...

遇到git提交报错:413

是因为提交文件过大导致内存溢出。 解决方法&#xff1a; 假设您的提交历史如下&#xff1a; Apply to .gitignore abcd123 当前提交 efgh456 包含node_modules的提交 ijkl789 较早的正常提交 您可以&#xff1a; 回退到添加node_modules之前的提交&#xff1a; bash App…...

关于nacos注册的服务的ip异常导致网关路由失败的问题

文章目录 关于nacos注册的服务的ip异常导致网关路由失败的问题相关处理方案为方案一:手动指定服务注册的 IP 地址方法二&#xff1a;设置优先使用的网络段方法三&#xff1a;指定网络接口方法四&#xff1a;忽略特定的网卡 备注 关于nacos注册的服务的ip异常导致网关路由失败的…...

大模型在初治CLL成人患者诊疗全流程风险预测与方案制定中的应用研究

目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与慢性淋巴细胞白血病相关知识 2.1 大模型技术原理与特点 2.2 慢性淋巴细胞白血病的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模…...

【C++游戏引擎开发】第9篇:数学计算库GLM(线性代数)、CGAL(几何计算)的安装与使用指南

写在前面 两天都没手搓实现可用的凸包生成算法相关的代码&#xff0c;自觉无法手搓相关数学库&#xff0c;遂改为使用成熟数学库。 一、GLM库安装与介绍 1.1 vcpkg安装GLM 跨平台C包管理利器vcpkg完全指南 在PowerShell中执行命令&#xff1a; vcpkg install glm# 集成到系…...

408 计算机网络 知识点记忆(8)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容&#xff0c;系统梳理核心知识记忆点和框架&#xff0c;既为个人复习沉淀思考&#xff0c;亦希望能与同行者互助共进。&#xff08;PS&#xff1a;后续将持续迭代优化细节&#xff09; 往期内容 408 计算机网络 知识…...

基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南

基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南 一、背景与价值 在流计算生产环境中&#xff0c;Flink on YARN的部署方式凭借其资源管理优势被广泛采用。Savepoint作为Flink任务状态的一致性快照&#xff0c;承载着故障恢复、版本升级、作业暂停等重要场景…...

我可能用到的网站和软件

我可能用到的网站和软件 程序员交流的网站代码管理工具前端组件库前端框架在线工具人工智能问答工具学习的网站Windows系统电脑的常用工具 程序员交流的网站 csdn博客博客园 - 开发者的网上家园InfoQ - 软件开发及相关领域-极客邦掘金 (juejin.cn) 代码管理工具 GitHub 有时…...

FPGA状态机设计:流水灯实现、Modelsim仿真、HDLBits练习

一、状态机思想 1.概念 状态机&#xff08;Finite State Machine, FSM&#xff09;是计算机科学和工程领域中的一种抽象模型&#xff0c;用于描述系统在不同状态之间的转换逻辑。其核心思想是将复杂的行为拆解为有限的状态&#xff0c;并通过事件触发状态间的转移。 2.状态机…...

2024年第十五届蓝桥杯CC++大学A组--成绩统计

2024年第十五届蓝桥杯C&C大学A组--成绩统计 题目&#xff1a; 动态规划&#xff0c; 对于该题&#xff0c;考虑动态规划解法&#xff0c;先取前k个人的成绩计算其方差&#xff0c;并将成绩记录在数组中&#xff0c;记录当前均值&#xff0c;设小蓝已检查前i-1个人的成绩&…...

WinForm真入门(13)——ListBox控件详解

WinForm ListBox 详解与案例 一、核心概念 ‌ListBox‌ 是 Windows 窗体中用于展示可滚动列表项的控件&#xff0c;支持单选或多选操作&#xff0c;适用于需要用户从固定数据集中选择一项或多项的场景‌。 二、核心属性 属性说明‌Items‌管理列表项的集合&#xff0c;支持动…...

Kotlin 学习-集合

/*** kotlin 集合* List:是一个有序列表&#xff0c;可通过索引&#xff08;下标&#xff09;访问元素。元素可以在list中出现多次、元素可重复* Set:是元素唯一的集合。一般来说 set中的元素顺序并不重要、无序集合* Map:&#xff08;字典&#xff09;是一组键值对。键是唯一的…...

解决java使用easyexcel填充模版后,高度不一致问题

自定义工具&#xff0c;可以通过获取上一行行高设置后面所以行的高度 package org.springblade.modules.api.utils;import com.alibaba.excel.write.handler.RowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.wr…...

数据结构与算法之ACM Fellow-算法4.3 最小生成树

数据结构与算法之ACM Fellow-算法4.3 最小生成树 加权图 是一种为每条边关联一个 权值 或是 成本 的图模型。这种图能够自然地表示许多应用。在一幅航空图中&#xff0c;边表示航线&#xff0c;权值则可以表示距离或是费用。在一幅电路图中&#xff0c;边表示导线&#xff0c;…...