Stories

Detail Return Return

用Python寫入JSON、XML和YAML數據到Excel文件 - Stories Detail

在當今數據驅動的技術生態中,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工作表的導入,提供步驟介紹及代碼示例。

user avatar kobe_fans_zxc Avatar haoqidedalianmao Avatar jisujia02 Avatar
Favorites 3 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.