在数据处理场景中,CSV 以轻量、易编辑的特点成为日常数据交换的常用格式,但 XML 凭借结构化、可扩展的优势,在企业级系统集成、跨平台数据交互中更具优势。
如果你需要快速实现 CSV 到 XML 的格式转换,Free Spire.XLS for Python 是一个高效且免费的选择 — 它无需依赖 Microsoft Office,能轻松解析 CSV 文件并辅助完成 XML 结构化输出。本文将介绍如何使用该库实现 CSV 转 XML 格式。


一、核心优势与应用场景

1. 免费 Python 库核心亮点

  • 免费无水印:使用无需授权,无功能水印 ;
  • 轻量化:仅需Python环境,无需安装大型办公软件;
  • 双模式转换:支持手动构建自定义XML结构,也支持原生 SaveAsXml() 导出Open XML;
  • 高兼容性:支持读取各种编码、格式的CSV文件,输出标准XML格式;
  • 易上手:API设计简洁,新手也能快速掌握核心操作。

2. 适用场景

  • 企业系统对接:将业务系统导出的CSV报表转换为XML格式供上游系统调用;
  • 数据标准化:统一多源CSV数据的输出格式,适配XML接口规范;
  • 自动化处理:集成到Python脚本中,实现CSV转XML的批量/定时处理;
  • 办公系统兼容:生成的Open XML可直接被Excel等办公软件识别。

二、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 占用的内存资源,避免内存泄漏。

运行结果说明

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

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


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

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐