C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# Excel转为XML

使用C#将Excel转为XML的两种方案

作者:咕白m625

在数据处理场景中,Excel文件常作为中间格式存在,但其结构化程度有限,若需将Excel数据导入系统、进行二次分析或与XML格式服务对接,Excel 转 XML 成为一项高频需求,所以本文给大家介绍了使用C#将Excel转为XML的两种方案,需要的朋友可以参考下

在数据处理场景中,Excel文件常作为中间格式存在,但其结构化程度有限。若需将Excel数据导入系统、进行二次分析或与XML格式服务对接,Excel 转 XML 成为一项高频需求。然而,传统方法往往依赖复杂脚本或第三方工具,效率低、易出错。

本文将分享一个轻量、稳定的方案:使用免费库 Free Spire.XLS for .NET ,通过 C# 代码实现 Excel 到XML 的高效转换。

优势分析

相比手动解析或使用OpenXML,Free Spire.XLS提供成熟的 .NET 封装,支持无需安装 Office 环境即可读写 Excel 文件。

对比项传统方法(如VBA)Free Spire.XLS for .NET
依赖Office✅ 需要安装❌ 无依赖
开发效率⭐⭐⭐⭐⭐⭐
转换稳定性⚠️ 易出错✅ 高度可靠
适用场景小型脚本轻量级

需注意免费版虽无任何水印,但是有一定页数限制。

方案一:手动构建 XML 结构(灵活可控)

以下代码通过手动遍历 Excel 单元格、构建 XML 节点的方式,实现数据从 Excel 到 XML 的转换:

using System.Xml;
using Spire.Xls;

class ExcelToXmlConverter
{
    static void Main(string[] args)
    {
        // 创建Workbook对象
        Workbook wb = new Workbook();

        // 加载Excel文件
        wb.LoadFromFile("data.xlsx");

        // 获取第一个工作表
        Worksheet ws = wb.Worksheets[0];

        // 获取已使用的区域
        CellRange usedRange = ws.AllocatedRange;

        // 创建XML文档
        XmlDocument xmlDoc = new XmlDocument();
        XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
        xmlDoc.AppendChild(xmlDeclaration);

        // 创建根元素
        XmlElement root = xmlDoc.CreateElement("Worksheet");
        xmlDoc.AppendChild(root);

        // 设置工作表名称
        XmlElement nameElement = xmlDoc.CreateElement("Name");
        nameElement.InnerText = ws.Name;
        root.AppendChild(nameElement);

        // 遍历已使用的区域(行)
        for (int i = 0; i < usedRange.Rows.Length; i++)
        {
            XmlElement rowElement = xmlDoc.CreateElement("Row");
            root.AppendChild(rowElement);

            // 遍历列
            for (int j = 0; j < usedRange.Columns.Length; j++)
            {
                // 获取单元格的值
                object cellValue = usedRange[i+1, j+1].Value;

                // 创建单元格元素
                XmlElement cellElement = xmlDoc.CreateElement("Cell");
                rowElement.AppendChild(cellElement);

                // 创建数据元素
                XmlElement dataElement = xmlDoc.CreateElement("Data");
                dataElement.InnerText = cellValue?.ToString() ?? string.Empty;
                cellElement.AppendChild(dataElement);
            }
        }

        // 保存XML文件
        xmlDoc.Save("工作表写入XML.xml");

        // 释放资源
        wb.Dispose();
    }
}

该方案的核心优势在于高度灵活可控,开发者可根据需求自定义 XML 的结构与节点命名:

方案二:调用内置方法(简洁高效

Free Spire.XLS 组件提供了 SaveAsXml 方法,无需手动构建 XML 结构即可实现 Excel 到 XML 的快速转换,代码如下:

using Spire.Xls;

namespace ExcelToXML
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Load an Excel file
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Sample.xlsx");

            // Save the Excel file in Open XML file format
            workbook.SaveAsXml("ExcelToXML.xml");
        }
    }
}

该方案的最大优势在于简洁高效,通过封装好的 API 大幅简化开发流程:

两种方案适用场景

开发者可根据实际需求选择合适方案:

  1. 若需生成自定义格式的 XML 文件(如用于特定系统的数据交换、自定义配置文件),或需对 Excel 数据进行过滤、格式化等处理,建议选择方案一
  2. 若仅需快速将 Excel 转换为标准 Open XML 格式,且无需自定义结构(如用于 Office 软件兼容、通用数据备份),建议选择方案二

到此这篇关于使用C#将Excel转为XML的两种方案的文章就介绍到这了,更多相关C# Excel转为XML内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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