C# 中 Excel 转 DataTable 的技能实现

[复制链接]
发表于 昨天 15:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在企业级 .NET 开辟场景中,Excel 文件与内存数据集(如 DataTable)的格式互转是高频技能需求。DataTable 作为 .NET 框架中通用的内存数据布局,常被用于承接 Excel 数据并完成后续的数据验证、长期化、展示等利用。本文聚焦于 .NET 情况下,怎样通过第三方类库实现 Excel 文件到 DataTable 的高效转换,焦点教学数据转换的技能实现逻辑与关键方法的使用。
在开始前可通过NuGet包管理器快速安装 Free Spire.XLS for .NET 免费库,具体步调如下:

  • 右键项目 → 管理 NuGet 步调包;
  • 搜刮对应类库名称并安装最新稳固版;
  • 或在 Package Manager Console 实行下令:
  1. Install-Package FreeSpire.XLS
复制代码
留意:该类库的免费版本存在数据量使用限定,实用于小规模数据处置惩罚场景。
焦点实现:Excel 转 DataTable

1. 底子实现:完备转换流程

以下代码实现 Excel 文件到 DataTable 的焦点转换逻辑,覆盖 “加载 Excel 文件 → 选取目标工作表 → 调用封装方法完成数据转换 → 验证转换效果” 全流程,可直接用于底子转换场景:
  1. using Spire.Xls;
  2. using System;
  3. using System.Data;
  4. namespace ExcelToDataTableDemo
  5. {
  6.     class Program
  7.     {
  8.         static void Main()
  9.         {
  10.             // 定义Excel文件路径
  11.             string excelFilePath = "Sample.xlsx";
  12.             // 1. 初始化Workbook并加载Excel文件
  13.             Workbook workbook = new Workbook();
  14.             workbook.LoadFromFile(excelFilePath);
  15.             // 2. 获取第一个工作表(索引从0开始)
  16.             Worksheet sheet = workbook.Worksheets[0];
  17.             // 3. 核心:调用内置ExportDataTable方法转换
  18.             // 参数1:要导出的单元格范围(AllocatedRange表示工作表的有效数据范围)
  19.             // 参数2:是否将第一行作为DataTable的列名
  20.             DataTable dataTable = sheet.ExportDataTable(sheet.AllocatedRange, true);
  21.             // 4. 验证转换结果:输出数据信息
  22.             Console.WriteLine("=== Excel转DataTable结果 ===");
  23.             // 输出总行数(排除表头)
  24.             Console.WriteLine($"数据总行数:{dataTable.Rows.Count}");
  25.             // 输出列名
  26.             Console.Write("列名:");
  27.             foreach (DataColumn col in dataTable.Columns)
  28.             {
  29.                 Console.Write(col.ColumnName + "\t");
  30.             }
  31.             Console.WriteLine("\n=== 数据内容 ===");
  32.             // 输出所有行数据
  33.             foreach (DataRow row in dataTable.Rows)
  34.             {
  35.                 foreach (var cellValue in row.ItemArray)
  36.                 {
  37.                     Console.Write(cellValue + "\t");
  38.                 }
  39.                 Console.WriteLine();
  40.             }
  41.         }
  42.     }
  43. }
复制代码
2. 进阶用法:自界说转换范围与参数

ExportDataTable 提供多个重载方法,可满足“指定转换范围、是否导出盘算公式值”等个性化开辟需求,以下是两类典范的进阶使用场景:
场景1:指定行/列范围转换(如第2-10行、第1-3列)
  1. // 获取指定范围的单元格(行/列索引均从1开始)
  2. CellRange targetRange = sheet.Range["A2:C10"];
  3. // 转换指定范围,且不将第一行作为列名(因范围从第2行开始)
  4. DataTable dataTable = sheet.ExportDataTable(targetRange, false);
复制代码
场景2:转换时盘算公式值
  1. // 重载方法:第三个参数控制是否计算公式值。
  2. // 参数说明:
  3. // range:转换范围
  4. // exportColumnNames:是否将第一行作为列名
  5. // computedFormulaValue:是否计算公式值
  6. DataTable dataTable = sheet.ExportDataTable(
  7.     sheet.AllocatedRange,
  8.     true,  
  9.     true
  10. );
复制代码
在.NET开辟中,通过 ExportDataTable 方法可实现 Excel 数据到 DataTable 的批量转换,该方法通过封装底层的单位格遍历、数据范例映射逻辑,替换了手动逐单位格读取数据的方式,是 Excel 与 DataTable 互转场景下的高效实现方案。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表