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

 更新时间:2025年09月12日 10:28:28   作者:咕白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 的结构与节点命名:

  • 节点自定义:可自由修改根节点(如将 <Worksheet> 改为 <ExcelData> )、行节点(<Row>)、单元格节点(<Cell>)的名称,满足不同场景下的 XML 格式要求;
  • 结构可视化:通过手动创建节点,开发者能清晰掌控 XML 的层级关系(如 Worksheet -> NameWorksheet -> Row -> Cell -> Data),便于后续 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 大幅简化开发流程:

  • 代码极简:仅需 3 行核心代码,即可完成转换,降低开发难度与代码维护成本;
  • 遵循标准格式SaveAsXml 方法生成的 XML 文件严格遵循Open XML 规范(微软定义的开放式文档格式标准),确保文件的兼容性,可被其他支持 Open XML 的软件(如 Office、Apache POI 等)正常解析;

两种方案适用场景

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

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

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

相关文章

  • C#创建自签名认证文件的方法

    C#创建自签名认证文件的方法

    这篇文章主要介绍了C#创建自签名认证文件的方法,实例分析了C#自签名认证文件的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C#.NET获取拨号连接的宽带连接方法

    C#.NET获取拨号连接的宽带连接方法

    这篇文章主要介绍了C#.NET获取拨号连接的宽带连接方法,实例演示了一个C#封装的ADSL拨号连接类及其使用方法,需要的朋友可以参考下
    2015-06-06
  • C# Winform按钮中图片实现左图右字的效果实例

    C# Winform按钮中图片实现左图右字的效果实例

    这篇文章主要给大家介绍了关于C# Winform按钮中图片实现左图右字效果的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Unity 按钮添加OnClick事件操作

    Unity 按钮添加OnClick事件操作

    这篇文章主要介绍了Unity 按钮添加OnClick事件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C# 中string.split用法详解

    C# 中string.split用法详解

    本文给大家分享了C# 中string.split用法的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • C#多线程之Semaphore用法详解

    C#多线程之Semaphore用法详解

    这篇文章主要为大家详细介绍了C#多线程之Semaphore用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C# WinForm实现Win7 Aero透明效果代码

    C# WinForm实现Win7 Aero透明效果代码

    这篇文章主要介绍了C# WinForm实现Win7 Aero透明效果代码,通过调用dwmapi.dll相关方法实现,需要的朋友可以参考下
    2014-07-07
  • C#枚举数值与名称的转换实例分享

    C#枚举数值与名称的转换实例分享

    在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法
    2013-08-08
  • UnityShader3实现转圈与冷却效果

    UnityShader3实现转圈与冷却效果

    这篇文章主要为大家详细介绍了UnityShader3实现转圈与冷却效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C#中虚方法virtual示例详解

    C#中虚方法virtual示例详解

    这篇文章主要介绍了C#中虚方法virtual的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03

最新评论