当前位置: 代码网 > it编程>编程语言>Asp.net > C#实现将Excel表格转换为DataTable

C#实现将Excel表格转换为DataTable

2026年01月21日 Asp.net 我要评论
在企业级开发中,excel 与数据库 / 内存数据集的互转是高频需求,datatable 作为.net 中通用的内存数据结构,常被用于承接 excel 数据进行后续处理(如数据验证、入库、展示)。本文

在企业级开发中,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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com