使用C#实现Excel与DataTable互转的方案
作者:LSTM97
在企业级开发中,Excel文件与DataTable(数据表)的互转是报表生成、数据迁移等场景的核心需求,传统方案如OleDb或Office Interop存在内存泄漏、性能低下等问题,且依赖本地Office组件,所以本文给大家介绍了使用C#实现Excel与DataTable互转的方案,需要的朋友可以参考下
引言
在企业级开发中,Excel文件与DataTable(数据表)的互转是报表生成、数据迁移等场景的核心需求。传统方案如OleDb或Office Interop存在内存泄漏、性能低下等问题,且依赖本地Office组件。而 Spire.XLS for .NET 作为企业级文档操作库,具备零依赖、跨平台、全格式支持等特性,本文将详解双向互转的实现方案。
实现方案详解
方法一:Excel→DataTable
实现步骤
- 加载Excel文件:使用
Workbook
类加载文件 - 选择工作表:指定目标Sheet索引或名称
- 转换逻辑:通过
ExportDataTable()
方法提取数据
using Spire.Xls; using System.Data; try { // 初始化工作簿 Workbook workbook = new Workbook(); workbook.LoadFromFile("Input.xlsx"); // 获取首个工作表 Worksheet sheet = workbook.Worksheets[0]; // 转换配置:首行包含列名 DataTable dt = sheet.ExportDataTable( sheet.FirstRow, // 起始行 sheet.FirstColumn, // 起始列 sheet.LastRow, // 结束行 sheet.LastColumn, // 结束列 true // hasColumnNames ); } catch (Exception ex) { Console.WriteLine($"转换失败:{ex.Message}"); }
核心参数
- HasColumnNames:控制是否将首行作为DataTable列名
- 边界计算:动态获取
LastRow
可兼容动态数据区域
方法二:DataTable→Excel
实现步骤
- 创建工作簿:初始化
Workbook
与工作表 - 样式配置:设置标题行字体、背景色
- 数据填充:通过
InsertDataTable()
批量写入
using Spire.Xls; using System.Data; DataTable dt = GetDataSource(); // 获取数据源 try { Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; // 设置标题样式 CellStyle style = workbook.Styles.Add("HeaderStyle"); style.Font.IsBold = true; style.Color = Color.LightGray; // 写入数据(从A1开始) sheet.InsertDataTable(dt, true, 1, 1); // 应用样式到标题行 sheet.GetRange(1, 1, 1, dt.Columns.Count).CellStyle = style; // 自适应列宽 sheet.AllocatedRange.AutoFitColumns(); // 保存文件 workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2016); } catch (Exception ex) { Console.WriteLine($"导出失败:{ex.Message}"); }
性能优化
- AutoFitColumns() :避免手动计算列宽
- 批量写入:
InsertDataTable
相比逐行写入效率提升80%
注意事项
- 大文件处理:建议分批次处理超过10万行的数据集,避免内存溢出
- 格式兼容性:导出时指定
ExcelVersion
参数可适配不同版本Office
结语
通过 Workbook.LoadFromFile() 与 Worksheet.ExportDataTable() 的组合,开发者可快速实现双向数据转换。Spire.XLS凭借其对.NET Core的深度支持,在微服务、云端渲染等场景表现卓越。建议通过NuGet获取最新稳定版(Install-Package Spire.XLS
)开启高效开发。
以上就是使用C#实现Excel与DataTable互转的方案的详细内容,更多关于C# Excel与DataTable互转的资料请关注脚本之家其它相关文章!