新闻中心

C#如何高效读取XML并写入Excel .NET开发者的实用代码片段

2025-11-27
浏览次数:
返回列表
使用C#结合XmlDocument和EPPlus可高效将XML数据导出到Excel。首先通过NuGet安装EPPlus库,然后加载XML文件并解析Record节点,提取Name、Age、City等字段存入字典列表,接着创建Excel工作表,写入表头和数据行,最后自动调整列宽并保存文件。该方法适用于配置导入、报表生成等场景,支持UTF-8中文内容,建议对大型文件使用XmlReader流式读取以提升性能。

c#如何高效读取xml并写入excel .net开发者的实用代码片段

在.NET开发中,处理XML数据并将其导出到Excel是常见的业务需求,比如配置导入、报表生成等场景。C#结合 System.XmlEPPlusNPOI 可以高效完成这一任务。以下是一个实用、结构清晰的代码片段,帮助你快速实现从XML读取到Excel写入的流程。

1. 准备工作:引入必要的库

推荐使用 EPPlus(支持 .NET 6+),它操作 Excel (.xlsx) 文件简单高效。

通过 NuGet 安装:
  • Install-Package EPPlus

确保你的项目启用非安全代码或处理 COM 的权限(如果使用 Microsoft.Office.Interop,则不推荐用于服务端)。

2. 示例 XML 结构

假设有一个名为 data.xml 的文件:

Motiff妙多 Motiff妙多

Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”

Motiff妙多 334 查看详情 Motiff妙多
<?xml version="1.0" encoding="utf-8"?>
<Records>
  <Record>
    <Name>张三</Name>
    <Age>28</Age>
    <City>北京</City>
  </Record>
  <Record>
    <Name>李四</Name>
    <Age>32</Age>
    <City>上海</City>
  </Record>
</Records>

3. 使用 XmlDocument 高效读取 XML

XmlDocument 适合结构清晰的小到中型 XML 文件,易于遍历节点。

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using OfficeOpenXml; // EPPlus

class Program
{
    static void Main()
    {
        string xmlPath = "data.xml";
        string excelPath = "output.xlsx";

        var records = new List<Dictionary<string, string>>();

        XmlDocument doc = new XmlDocument();
        doc.Load(xmlPath);

        XmlNodeList recordNodes = doc.SelectNodes("//Record");

        foreach (XmlNode node in recordNodes)
        {
            var record = new Dictionary<string, string>();
            record["Name"] = node["Name"]?.InnerText ?? "";
            record["Age"] = node["Age"]?.InnerText ?? "";
            record["City"] = node["City"]?.InnerText ?? "";
            records.Add(record);
        }

        WriteToExcel(records, excelPath);
        Console.WriteLine("数据已成功写入 Excel:" + excelPath);
    }
}

4. 使用 EPPlus 写入 Excel

将读取的数据写入 Excel 表格,首行为列标题。

static void WriteToExcel(List<Dictionary<string, string>> data, string filePath)
{
    if (data.Count == 0) return;

    ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 免费使用

    using (var package = new ExcelPackage())
    {
        var worksheet = package.Workbook.Worksheets.Add("数据表");

        // 写入表头
        var headers = data[0].Keys;
        int col = 1;
        foreach (var header in headers)
        {
            worksheet.Cells[1, col].Value = header;
            col++;
        }

        // 写入数据行
        int row = 2;
        foreach (var record in data)
        {
            col = 1;
            foreach (var key in headers)
            {
                worksheet.Cells[row, col].Value = record[key];
                col++;
            }
            row++;
        }

        // 自动调整列宽
        worksheet.Cells.AutoFitColumns();

        // 保存文件
        FileInfo file = new FileInfo(filePath);
        package.S*eAs(file);
    }
}

5. 进阶建议

  • 对于大型 XML 文件,考虑使用 XmlReader 流式读取,避免内存溢出。
  • 添加异常处理(如文件不存在、格式错误)提升健壮性。
  • 若需样式控制(字体、边框),EPPlus 支持详细格式设置。
  • 支持中文路径和内容时,确保文件编码一致(UTF-8)。

基本上就这些。这套组合拳适用于大多数数据迁移、报表导出场景,代码简洁且性能良好。

以上就是C#如何高效读取XML并写入Excel .NET开发者的实用代码片段的详细内容,更多请关注其它相关文章!


# node  # 进阶  # 是一个  # 转换成  # 数据处理  # 适用于  # 如何将  # .net  # 上海  # microsoft  # ai  # office  # 编码  # excel  # c#  # 数字化练字网站推广策划  # SEO也叫竞价排名  # 中小企业网站推广计划书  # 民宿关键词排名平台  # 龙岩seo招商加盟  # 和龙免费网站推广  # 福建服务网站建设方案  # 九江推广网站优化  # 广州网站推广咨询电话  # 蔬菜的服务营销推广策划  # 导出到  # 这一  # 流式 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  解决Django多数据库/多Schema环境下外键迁移问题  解决深度学习模型训练初期异常高损失与完美验证准确率问题  J*a TimerTask中HashMap意外清空的深层原因与解决方案  照顾宝贝2小游戏免费秒玩入口  AO3最新可访问网址 Archive of Our Own官方在线入口  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器  最新韩小圈网页版登录入口_官网在线观看官方链接  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  qq游戏手机版下载安装_qq游戏移动端入口  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  C++指针和引用有什么区别_C++内存管理核心概念深度解析  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】  电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】  蛙漫安全无毒 官方认证的绿色入口  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  高德地图怎么看全景照片_高德地图全景照片浏览教程  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  React/Next.js中实现列表项的动态选择与移动  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  Go语言中JSON数据解码与字段访问指南  Tailwind CSS line-clamp 布局问题解析与修复指南  J*a应用程序首次运行自动创建文件与目录的最佳实践  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  Go调试环境为何无法启动_Go调试器启动失败原因与解决策略  mc.js游戏直达 mc.js网页免下载版本秒进地址  如何使 Jest 模拟函数默认抛出错误以提高测试效率  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  uc浏览器网页版入口 uc浏览器网页版最新网址  J*aScriptWebpack优化_J*aScript构建工具实战  解决Flask中Quill编辑器内容提交失败及TypeError的指南  《北京人工智能产业白皮书(2025)》发布:全年核心产值预计突破 4500 亿元  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  解决 Express.js 中 PUT 请求密码修改失败的路由配置指南  Win11怎么关闭快速启动_Win11彻底关机设置教程  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  动漫岛观看全网网 动漫岛在线正版动漫入口  漫蛙网页登录入口 漫蛙漫画官方授权网址  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  深入理解J*aScript中的B样条曲线与节点向量生成  C++如何生成随机数_C++ random库使用方法与范围设置 

搜索