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

在.NET开发中,处理XML数据并将其导出到Excel是常见的业务需求,比如配置导入、报表生成等场景。C#结合 System
.Xml 和 EPPlus 或 NPOI 可以高效完成这一任务。以下是一个实用、结构清晰的代码片段,帮助你快速实现从XML读取到Excel写入的流程。
1. 准备工作:引入必要的库
推荐使用 EPPlus(支持 .NET 6+),它操作 Excel (.xlsx) 文件简单高效。
通过 NuGet 安装:- Install-Package EPPlus
确保你的项目启用非安全代码或处理 COM 的权限(如果使用 Microsoft.Office.Interop,则不推荐用于服务端)。
2. 示例 XML 结构
假设有一个名为 data.xml 的文件:
Motiff妙多
Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”
334
查看详情
<?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库使用方法与范围设置


2025-11-27
浏览次数:次
返回列表