• 用Python在XML和Excel表格之间实现互转


    XML是一种超文本标记语言和文件格式,具有可自定义标签,易于扩展,便于编辑,传输便捷等优点。XML已成为应用数据交换的常用方式。虽然XML格式易于传输和开发者操作,但对于普通用户来说,数据以xls或xlsx的形式呈现更易阅读和编辑。本篇文章将分享如何使用Python在XML文件和Excel表之间实现互转

    本文使用Spire.XLS for Python工具实现转换,可以从官方网站下载,或通过pip进行安装(同时需要安装Dispatch 1.7.4):

    pip install Spire.XLS-for-Python
    pip install plum-dispatch==1.7.4
    
    • 1
    • 2

    从Excel电子表格到XML的转换

    我们可以使用 SaveAsXML(fileName: str) 方法或 SaveToFile(fileName: str, FileFormat.XML) 方法将Excel工作簿转换为XML文件。注意,转换后只有字体、字号等样式信息会被保留。具体的步骤如下:

    • 实例化 Workbook 类。
    • 利用 Workbook.LoadFromFile() 方法加载Excel表格。
    • 通过 Wordbook.SaveAsXml() 方法或 Wordbook.SaveToFile() 方法将表格转换为XML文件并保存。

    Python

    from spire.xls import *
    from spire.common import *
    
    # 创建 Workbook 对象
    workbook = Workbook()
    
    # 从文件加载 Excel 表格
    workbook.LoadFromFile("示例.xlsx")
    
    # 将工作簿保存为 XML 文件
    workbook.SaveAsXml("output/XLSX转XML.xml")
    # workbook.SaveToFile("output/XLSX转XML.xml", FileFormat.XML)
    ## 将标准XML文
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    原工作簿
    Excel表格与XML文件互转
    转换结果
    Excel表格转XML

    标准XML文件转换Excel表格

    如果是符合Excel标准的XML文件,可直接转换为工作簿。操作步骤如下:

    • 创建 Workbook 类的对象。
    • 使用 Workbook.LoadFromXml() 方法载入XML文件
    • 使用 Workbook.SaveToFIle() 方法将XML文件转换为Excel工作簿并保存。

    Python

    from spire.xls import *
    from spire.common import *
    
    # 创建 Workbook 类的对象
    workbook = Workbook()
    
    # 从 XML 文件加载数据
    workbook.LoadFromXml("XML表格.xml")
    
    # 将 XML 文件转换为 Excel 工作簿并保存
    workbook.SaveToFile("output/XML转XLSX.xlsx", FileFormat.Version2016)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    转换结果
    XML转Excel表格

    读取XML数据保存到Excel工作簿

    如果是不符合Excel标准的XML数据,则可以通过读取其中的数据并保存到Excel工作簿中来实现转换。
    用于操作的XML文件:
    XML数据保存为Excel表格

    详细操作步骤如下:

    • 创建一个 Workbook 类的对象。
    • 加载XML数据。
    • 获取第一个order节点来确定列数和表头。
    • 添加一个工作表并设置工作表名。
    • 使用 Worksheet.SetValue() 方法写入数据。
    • 使用 Workbook.SaveToFile() 方法保存工作簿为新的 Excel 文件。

    Python

    from spire.xls import *
    from spire.common import *
    import xml.etree.ElementTree as ET
    
    # 创建一个Workbook类的对象
    workbook = Workbook()
    
    # 加载 XML 数据
    xml_tree = ET.parse("示例.xml")
    xml_root = xml_tree.getroot()
    
    # 获取第一个order节点来确定列数和表头
    first_student = xml_root.find("order")
    header = list(first_student.iter())[1:]  # 跳过第一个节点
    
    # 定义英文和中文标签的映射关系
    label_mapping = {
        "order_number": "订单编号",
        "date": "日期",
        "product_name": "产品名称",
        "unit_price": "单价",
        "quantity": "数量",
        "total_sales": "总销售额"
    }
    
    # 添加一个工作表并设置工作表名
    worksheet = workbook.Worksheets[0]
    worksheet.Name = "销售数据跟踪"
    
    # 写入表头
    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)
    
    # 写入订单数据
    row_index = 2
    for student in xml_root.iter("order"):
        for col_index, data_node in enumerate(list(student.iter())[1:], start=1):  # 跳过第一个节点
            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")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    结果文件
    XML数据保存为Excel表格

    以上是关于XML和Excel表格之间相互转换的介绍。Spire.XLS for Python还有许多其他功能,可前往Spire.XLS for Python教程了解更多。

  • 相关阅读:
    考证必看 | PMP扫盲贴+PMP材料
    Adobe Acrobat DC中如何合并pdf并生成目录
    云计算的发展趋势和挑战
    简单聊聊Https的来龙去脉
    The Rise and Potential of Large Language Model Based Agents: A Survey
    C++ 基础二
    java中@Repository注解的作用?
    尾矿库安全监测:仪器埋设与维护的关键要求
    面向高速公路车辆切入场景的自动驾驶测试用例生成方法
    MVC医院信息管理系统源码 BS架构
  • 原文地址:https://blog.csdn.net/Eiceblue/article/details/133268870