在企业级开发中,excel 与数据库 / 内存数据集的互转是高频需求,datatable 作为.net 中通用的内存数据结构,常被用于承接 excel 数据进行后续处理(如数据验证、入库、展示)。本文将分享如何使用免费库 free spire.xls for .net 实现 excel 文件到 datatable 的高效转换。
一、免费库介绍与安装
1. free spire.xls for .net 核心优势
内置 exportdatatable 方法,无需手动遍历单元格,代码量减少80%;
无需依赖 microsoft office/excel 客户端,跨平台部署更便捷;
支持 .xls、.xlsx 等主流 excel 格式,api封装直观,新手易上手。
注意: 免费版有一定数据量限制,适合小型项目
2. 安装 free spire.xls
推荐通过nuget快速安装,步骤如下:
- 右键项目 → 管理nuget程序包;
- 搜索“free spire.xls”并安装最新稳定版;
或在 package manager console 执行命令:
install-package freespire.xls
二、核心实现:excel 转 datatable
1. 将指定工作表转换为 datatable 内存数据集
以下代码实现最核心的转换逻辑,包含 “加载 excel→选取目标工作表→核心数据转datatable→验证并输出结果” 完整流程:
using spire.xls;
using system;
using system.data;
namespace exceltodatatabledemo
{
class program
{
static void main()
{
// 定义excel文件路径
string excelfilepath = "sample.xlsx";
// 1. 初始化workbook并加载excel文件
workbook workbook = new workbook();
workbook.loadfromfile(excelfilepath);
// 2. 获取第一个工作表(索引从0开始)
worksheet sheet = workbook.worksheets[0];
// 3. 核心:调用内置exportdatatable方法转换
// 参数1:要导出的单元格范围(allocatedrange表示工作表的有效数据范围)
// 参数2:是否将第一行作为datatable的列名
datatable datatable = sheet.exportdatatable(sheet.allocatedrange, true);
// 4. 验证转换结果:输出数据信息
console.writeline("=== excel转datatable结果 ===");
// 输出总行数(排除表头)
console.writeline($"数据总行数:{datatable.rows.count}");
// 输出列名
console.write("列名:");
foreach (datacolumn col in datatable.columns)
{
console.write(col.columnname + "\t");
}
console.writeline("\n=== 数据内容 ===");
// 输出所有行数据
foreach (datarow row in datatable.rows)
{
foreach (var cellvalue in row.itemarray)
{
console.write(cellvalue + "\t");
}
console.writeline();
}
}
}
}
2. 进阶用法:自定义转换范围与参数
exportdatatable 提供了多个重载方法,可满足“指定转换范围、是否导出空值”等个性化需求,以下是常用进阶场景:
场景1:只转换指定行/列范围(如第2-10行、第1-3列)
// 获取指定范围的单元格(行/列索引均从1开始) cellrange targetrange = sheet.range["a2:c10"]; // 转换指定范围,且不将第一行作为列名(因范围从第2行开始) datatable datatable = sheet.exportdatatable(targetrange, false);
场景2:导出时计算公式值
// 重载方法:第三个参数控制是否计算公式值。
// 参数说明:
// range:转换范围
// exportcolumnnames:是否将第一行作为列名
// computedformulavalue:是否计算公式值
datatable datatable = sheet.exportdatatable(
sheet.allocatedrange,
true,
true
);
通过本文的 exportdatatable 方法,一行代码即可完成核心excel 到 datatable 的转换,无需手动遍历单元格。
到此这篇关于c#实现将excel表格转换为datatable的文章就介绍到这了,更多相关c# excel转datatable内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论