首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将数据从Excel获取到DataTable时跳过空行

基础概念

DataTable 是一种用于存储表格数据的 .NET 类型,通常用于 ASP.NET、Windows Forms 和其他 .NET 应用程序中。Excel 文件中的数据可以通过多种方式导入到 DataTable 中,例如使用 OpenXMLOleDbEPPlus 等库。

相关优势

  1. 灵活性DataTable 可以动态添加列和行,非常适合处理不规则的数据集。
  2. 易于集成:与 .NET 框架紧密集成,便于在各种应用程序中使用。
  3. 数据绑定:可以直接与 UI 控件(如 DataGridView)绑定,简化数据展示。

类型

  • 手动创建:通过代码逐行逐列添加数据。
  • 从文件导入:从 Excel、CSV 等文件导入数据。

应用场景

  • 数据分析:将 Excel 数据导入 DataTable 进行进一步处理和分析。
  • 数据展示:将数据绑定到 UI 控件,如 DataGridView
  • 数据导入导出:在应用程序中实现数据的导入导出功能。

问题描述

在将数据从 Excel 获取到 DataTable 时,可能会遇到空行的问题。空行不仅占用空间,还可能影响数据处理和分析。

原因

Excel 文件中的空行可能是由于数据录入时的疏忽或格式问题导致的。

解决方法

以下是使用 EPPlus 库从 Excel 文件导入数据到 DataTable 并跳过空行的示例代码:

代码语言:txt
复制
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;

public class ExcelHelper
{
    public static DataTable GetDataTableFromExcel(string filePath)
    {
        DataTable dataTable = new DataTable();
        using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            using (var package = new ExcelPackage(stream))
            {
                var worksheet = package.Workbook.Worksheets[0];
                int rowCount = worksheet.Dimension.End.Row;
                int colCount = worksheet.Dimension.End.Column;

                // 添加列
                for (int col = 1; col <= colCount; col++)
                {
                    dataTable.Columns.Add(worksheet.Cells[1, col].Value.ToString());
                }

                // 添加行并跳过空行
                for (int row = 2; row <= rowCount; row++)
                {
                    bool isEmptyRow = true;
                    for (int col = 1; col <= colCount; col++)
                    {
                        if (worksheet.Cells[row, col].Value != null)
                        {
                            isEmptyRow = false;
                            break;
                        }
                    }
                    if (!isEmptyRow)
                    {
                        DataRow dataRow = dataTable.NewRow();
                        for (int col = 1; col <= colCount; col++)
                        {
                            dataRow[col - 1] = worksheet.Cells[row, col].Value;
                        }
                        dataTable.Rows.Add(dataRow);
                    }
                }
            }
        }
        return dataTable;
    }
}

参考链接

通过上述代码,可以有效地从 Excel 文件中导入数据到 DataTable 并跳过空行。EPPlus 库提供了强大的 Excel 处理功能,简化了数据导入的过程。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Magicodes.IE 2.2里程碑需求和建议征集

为了更好的根据实际功能来迭代,2.2的里程碑规划开始,我们结合社区的建议和意见来进行迭代,您可以点此链接来提交您的意见和建议: https://github.com/dotnetcore/Magicodes.IE...导入结果筛选器(可修改标注文件) 导出支持文本自定义过滤或处理; 导入支持中间空行自动跳过; 导入支持自动根据 DTO 生成导入模板,针对必填项将自动标注; ?...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

1.6K20

Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域

上篇提到如何Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处。 VSTO最大的优势是,这双向的过程中,全程有用户的交互操作。...而一般IT型的程序,都是脱离用户的操作,只能让用户准备好数据,离开Excel,或生成数据,要重新打开某文件才能获取到数据结果。...言归正传,如何DataTable数据导出至单元格区域 在传统的VBA方法中,有ADO的某个方法CopyToRange,直接DataRecordset的数据输出至单元格区域。...DataTable当然可以很轻松地转换为二维数组,再用Range.Resize的方式二维数组返回给单元格区域,这不失为一个方法,但此处再次强调,这不是最优的方法。...对于数据量较大的数据导出需求,用ListObject的数据绑定方式导出,有性能瓶颈,可考虑用EPPLUS的方式读写Excel文件。

2.4K30
  • Magicodes.IE 2.5.4.2发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.5K40

    Magicodes.IE 2.5.5.3发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.6K10

    Magicodes.IE 2.5.6.1发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.8K10

    Magicodes.IE 2.6.3 发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.9K20

    Magicodes.IE 2.5.6.2发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.2K20

    Magicodes.IE 2.7.2发布

    2.6.5-beta1 2022.07.17 【修复】如果为动态类型导出,如datatable/dynamic/proxy等,会将原始数据转成字符串。...导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    2K20

    .NET NPOI导出时间、公式等格式化

    1、业务背景 做导入某业务模块的Excel表格文件,利用NPOI组件导入, ① 导入的日期错乱(如XX-X月-2022),关于此种情况之前没做格式化做了单独处理,可以查看文章.net NPOI Excel...导入:时间格式2022/5/26导入变成26-5月-2022,做了格式化就快捷方便多了 ② Excel表中某列通过公式计算好的列导入后获取到的是公式(如D1*E1),不是具体的值, 此时就需要在工作表生成...时调用上述的公共方法 /// /// 工作表中生成DataTable /// /// /// <param...导入方法中调用工作表生成DataTable /// /// 由Excel导入DataTable /// /// <param name="excelFileStream...工作表中的各种类型<em>数据</em>都可以提前格式化成我们导入需要的<em>数据</em>形式,当然上面的格式化方法也只是列出了部分类型,还有很多类型欢迎补充,以此本文简单快速的解决了关于NPOI导入的格式化问题。

    17810

    Magicodes.IE 2.6.2 发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.7K40

    Magicodes.IE 2.6.0重磅发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.6K20

    Magicodes.IE 2.5.6.3发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.2K40

    Magicodes.IE 2.7.4.2发布

    2.6.5-beta1 2022.07.17 【修复】如果为动态类型导出,如datatable/dynamic/proxy等,会将原始数据转成字符串。...导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.9K30

    Magicodes.IE 2.7.1发布

    2.6.5-beta1 2022.07.17 【修复】如果为动态类型导出,如datatable/dynamic/proxy等,会将原始数据转成字符串。...导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.8K10

    Magicodes.IE 2.6.4 发布

    #104 2020.06.07 【Nuget】版本更新到2.2.4 【Excel导入】增加导入失败仅返回错误行功能 【Excel导入】修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn...【导出】修复导出HTML、Pdf、Word,模板在某些情况下编译报错的问题。 【导入】重写空行检查。...模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试 【导出】修复转换DataTable支持为空类型 【导出】导出Excel支持拆分Sheet...目前导出即为数据表 【导出】添加扩展方法ToExcelExportFileInfo 【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器...【导入】支持导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,EPPlus的包EPPlus.Core改为

    1.2K20

    Magicodes.IE 2.2发布

    命名空间下的部分特性来控制导入导出 #63 2020.04.16 【Nuget】版本更新到2.2.0-beta9 【Excel模板导出】修复只存在一列的导出 #73 【Excel导入】支持返回表头和索引...导入结果筛选器(可修改标注文件) 导出支持文本自定义过滤或处理; 导入支持中间空行自动跳过; 导入支持自动根据 DTO 生成导入模板,针对必填项将自动标注; ?...支持单个数据模板导出,常用于导出收据、凭据等业务 支持动态列导出(基于DataTable),并且超过100W将自动拆分Sheet。...Alt=404}} //图片渲染 后续支持自定义管道。 支持Excel导入模板生成标注 ?...支持Excel图片导入导出 图片导入 导入为Base64 导入到临时目录 导入到指定目录 图片导出 文件路径导出为图片 网络路径导出为图片 支持多个实体导出多个Sheet 支持使用System.ComponentModel.DataAnnotations

    67510
    领券