python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python CSV转XML

使用Python实现将CSV转换为XML格式

作者:Eiceblue

如果你需要快速实现 CSV 到 XML 的格式转换,本文将为大家详细介绍一下如何使用Free Spire.XLS for Python实现 CSV 转 XML 格式,希望对大家有所帮助

在数据处理场景中,CSV 以轻量、易编辑的特点成为日常数据交换的常用格式,但 XML 凭借结构化、可扩展的优势,在企业级系统集成、跨平台数据交互中更具优势。

如果你需要快速实现 CSV 到 XML 的格式转换,Free Spire.XLS for Python 是一个高效且免费的选择 — 它无需依赖 Microsoft Office,能轻松解析 CSV 文件并辅助完成 XML 结构化输出。本文将介绍如何使用该库实现 CSV 转 XML 格式。

一、核心优势与应用场景

1. 免费 Python 库核心亮点

2. 适用场景

二、CSV 转 XML 的两种方式

安装 Python 库

可通过 pip命令一键安装:

pip install Spire.XLS.Free

准备测试 CSV 文件

先创建一个示例CSV文件(命名为data.csv),内容如下(模拟用户信息):

姓名,年龄,城市,职业
张三,28,北京,工程师
李四,32,上海,产品经理
王五,25,广州,设计师

方式1:手动构建自定义结构 XML(灵活适配业务)

该方式可自定义XML节点名称、层级,适配各类业务系统的XML接口规范,是最常用的灵活方案。

from spire.xls import *
from spire.xls.common import *
import xml.etree.ElementTree as ET
from xml.dom import minidom

def csv_to_custom_xml(csv_path, xml_path):
    """
    手动构建自定义结构的XML(灵活适配业务需求)
    :param csv_path: 输入CSV文件路径
    :param xml_path: 输出XML文件路径
    """
    try:
        # 1. 初始化Workbook对象,加载CSV文件
        workbook = Workbook()
        # 设置加载CSV的编码(根据实际情况调整,如gbk、utf-8)
        workbook.LoadFromFile(csv_path, ",", 1, 1)
        
        # 2. 获取第一个工作表(CSV加载后默认在第一个Sheet)
        worksheet = workbook.Worksheets[0]
        
        # 3. 获取CSV的总行数和总列数(排除空行)
        row_count = worksheet.LastRow
        col_count = worksheet.LastColumn
        
        # 4. 构建XML根节点
        root = ET.Element("DataRecords")
        
        # 5. 遍历CSV数据(第一行为表头,从第二行开始是数据)
        headers = []
        for col in range(1, col_count + 1):
            # 获取表头文本
            header_text = worksheet.Range[1, col].Text
            headers.append(header_text)
        
        # 遍历数据行
        for row in range(2, row_count + 1):
            # 创建子节点(每个数据行对应一个Record节点)
            record = ET.SubElement(root, "Record")
            # 遍历当前行的列
            for col in range(1, col_count + 1):
                # 获取单元格值
                cell_value = worksheet.Range[row, col].Text
                # 创建列节点,节点名=表头,节点值=单元格内容
                field = ET.SubElement(record, headers[col - 1])
                field.text = cell_value
        
        # 6. 保存XML文件
        tree = ET.ElementTree(root)
        tree.write(custom_xml_file, encoding="utf-8", xml_declaration=True)
        
        print(f"自定义XML转换成功!文件已保存至:{xml_path}")
        
    except Exception as e:
        print(f"转换失败:{str(e)}")
    finally:
        # 释放Workbook资源
        workbook.Dispose()

# 调用自定义XML转换函数
if __name__ == "__main__":
    csv_file = "data.csv"
    custom_xml_file = "custom_data.xml"
    csv_to_custom_xml(csv_file, custom_xml_file)

方式2:导出为 Open XML 格式(快速兼容办公系统)

Free Spire.XLS 提供原生 SaveAsXml() 方法,可直接将加载的 CSV 文件导出为符合Open XML Spreadsheet 规范的 XML 文件,该格式可直接被 Excel、WPS 等办公软件识别,无需手动构建节点,适合快速导出场景。

from spire.xls import *
from spire.xls.common import *

def csv_to_open_xml(csv_path, xml_path):
    """
    导出Open XML格式(兼容Excel等办公软件)
    :param csv_path: 输入CSV文件路径
    :param xml_path: 输出Open XML文件路径
    """
    try:
        # 1. 初始化Workbook对象,加载CSV文件
        workbook = Workbook()
        # 设置CSV编码和分隔符
        workbook.LoadFromFile(csv_path, ",", 1, 1)
        
        # 2. 导出为Open XML格式
        workbook.SaveAsXml(xml_path)
        
        print(f"Open XML导出成功!文件已保存至:{xml_path}")
        
    except Exception as e:
        print(f"导出失败:{str(e)}")
    finally:
        # 释放Workbook资源
        workbook.Dispose()

# 调用Open XML导出函数
if __name__ == "__main__":
    csv_file = "data.csv"
    open_xml_file = "open_data.xml"
    csv_to_open_xml(csv_file, open_xml_file)

两种方式核心对比

转换方式核心特点适用场景
手动构建自定义 XML可自由定义节点名称、层级、属性,输出极简的业务 XML对接自定义 XML 接口、数据标准化、跨系统数据交互
导出Open XML一键导出,生成 Excel 兼容的 Open XML,无需手动构建节点快速导出、办公系统兼容、无需自定义 XML 结构的场景

关键代码解释

代码段功能说明
workbook.LoadFromFile(...)加载CSV文件,指定分隔符;
workbook.SaveAsXml(xml_path)直接将 Workbook 对象导出为 Open XML 格式;
ET.Element/ET.SubElement手动构建 XML 节点结构,完全自定义 XML 层级和名称;
workbook.Dispose()释放 Workbook 占用的内存资源,避免内存泄漏。

运行结果说明

自定义 XML 结果(custom_data.xml):结构简洁,完全匹配业务定义,示例如下:

Open XML 结果(open_data.xml):符合Excel的Open XML规范,包含工作表、单元格、格式等完整元数据,可直接用Excel打开,核心片段如下:

通过本文的教程,你可以根据实际需求选择合适的转换方式,无论是适配业务接口的自定义 XML,还是兼容办公软件的 Open XML,都能轻松实现。如果需要扩展功能(如XML转CSV、Excel转XML),可参考官方文档进一步探索。

到此这篇关于使用Python实现将CSV转换为XML格式的文章就介绍到这了,更多相关Python CSV转XML内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文