XML是一種超文本標(biāo)記語言和文件格式,具有可自定義標(biāo)簽,易于擴(kuò)展,便于編輯,傳輸便捷等優(yōu)點(diǎn)。XML已成為應(yīng)用數(shù)據(jù)交換的常用方式。雖然XML格式易于傳輸和開發(fā)者操作,但對(duì)于普通用戶來說,數(shù)據(jù)以xls或xlsx的形式呈現(xiàn)更易閱讀和編輯。本篇文章將分享如何使用Python在XML文件和Excel表之間實(shí)現(xiàn)互轉(zhuǎn)。
本文使用Spire.XLS for Python工具實(shí)現(xiàn)轉(zhuǎn)換,可以從官方網(wǎng)站下載,或通過pip進(jìn)行安裝(同時(shí)需要安裝Dispatch 1.7.4):
pip install Spire.XLS-for-Python
pip install plum-dispatch==1.7.4
從Excel電子表格到XML的轉(zhuǎn)換
我們可以使用 SaveAsXML(fileName: str) 方法或 SaveToFile(fileName: str, FileFormat.XML) 方法將Excel工作簿轉(zhuǎn)換為XML文件。注意,轉(zhuǎn)換后只有字體、字號(hào)等樣式信息會(huì)被保留。具體的步驟如下:
- 實(shí)例化 Workbook 類。
- 利用 Workbook.LoadFromFile() 方法加載Excel表格。
- 通過 Wordbook.SaveAsXml() 方法或 Wordbook.SaveToFile() 方法將表格轉(zhuǎn)換為XML文件并保存。
Python
from spire.xls import *
from spire.common import *
# 創(chuàng)建 Workbook 對(duì)象
workbook = Workbook()
# 從文件加載 Excel 表格
workbook.LoadFromFile("示例.xlsx")
# 將工作簿保存為 XML 文件
workbook.SaveAsXml("output/XLSX轉(zhuǎn)XML.xml")
# workbook.SaveToFile("output/XLSX轉(zhuǎn)XML.xml", FileFormat.XML)
## 將標(biāo)準(zhǔn)XML文
原工作簿
轉(zhuǎn)換結(jié)果
標(biāo)準(zhǔn)XML文件轉(zhuǎn)換Excel表格
如果是符合Excel標(biāo)準(zhǔn)的XML文件,可直接轉(zhuǎn)換為工作簿。操作步驟如下:
- 創(chuàng)建 Workbook 類的對(duì)象。
- 使用 Workbook.LoadFromXml() 方法載入XML文件
- 使用 Workbook.SaveToFIle() 方法將XML文件轉(zhuǎn)換為Excel工作簿并保存。
Python
from spire.xls import *
from spire.common import *
# 創(chuàng)建 Workbook 類的對(duì)象
workbook = Workbook()
# 從 XML 文件加載數(shù)據(jù)
workbook.LoadFromXml("XML表格.xml")
# 將 XML 文件轉(zhuǎn)換為 Excel 工作簿并保存
workbook.SaveToFile("output/XML轉(zhuǎn)XLSX.xlsx", FileFormat.Version2016)
轉(zhuǎn)換結(jié)果
讀取XML數(shù)據(jù)保存到Excel工作簿
如果是不符合Excel標(biāo)準(zhǔn)的XML數(shù)據(jù),則可以通過讀取其中的數(shù)據(jù)并保存到Excel工作簿中來實(shí)現(xiàn)轉(zhuǎn)換。
用于操作的XML文件:
詳細(xì)操作步驟如下:
- 創(chuàng)建一個(gè) Workbook 類的對(duì)象。
- 加載XML數(shù)據(jù)。
- 獲取第一個(gè)order節(jié)點(diǎn)來確定列數(shù)和表頭。
- 添加一個(gè)工作表并設(shè)置工作表名。
- 使用 Worksheet.SetValue() 方法寫入數(shù)據(jù)。
- 使用 Workbook.SaveToFile() 方法保存工作簿為新的 Excel 文件。
Python
from spire.xls import *
from spire.common import *
import xml.etree.ElementTree as ET
# 創(chuàng)建一個(gè)Workbook類的對(duì)象
workbook = Workbook()
# 加載 XML 數(shù)據(jù)
xml_tree = ET.parse("示例.xml")
xml_root = xml_tree.getroot()
# 獲取第一個(gè)order節(jié)點(diǎn)來確定列數(shù)和表頭
first_student = xml_root.find("order")
header = list(first_student.iter())[1:] # 跳過第一個(gè)節(jié)點(diǎn)
# 定義英文和中文標(biāo)簽的映射關(guān)系
label_mapping = {
"order_number": "訂單編號(hào)",
"date": "日期",
"product_name": "產(chǎn)品名稱",
"unit_price": "單價(jià)",
"quantity": "數(shù)量",
"total_sales": "總銷售額"
}
# 添加一個(gè)工作表并設(shè)置工作表名
worksheet = workbook.Worksheets[0]
worksheet.Name = "銷售數(shù)據(jù)跟蹤"
# 寫入表頭
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)
# 寫入訂單數(shù)據(jù)
row_index = 2
for student in xml_root.iter("order"):
for col_index, data_node in enumerate(list(student.iter())[1:], start=1): # 跳過第一個(gè)節(jié)點(diǎn)
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")
結(jié)果文件文章來源:http://www.zghlxwxcb.cn/news/detail-730603.html
以上是關(guān)于XML和Excel表格之間相互轉(zhuǎn)換的介紹。Spire.XLS for Python還有許多其他功能,可前往Spire.XLS for Python教程了解更多。文章來源地址http://www.zghlxwxcb.cn/news/detail-730603.html
到了這里,關(guān)于用Python在XML和Excel表格之間實(shí)現(xiàn)互轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!