使用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.pswp.cn/bicheng/77031.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77031.shtml
英文地址,請注明出處:http://en.pswp.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…