C#使用npoi读取excel到DataSet

在现代开发中,处理Excel文件的需求愈发普遍。尤其是使用C#进行开发时,如何高效地读取Excel数据成为了一个重要的课题。本文将介绍如何使用NPOI库将Excel文件读取到DataSet中,帮助开发者将Excel中的数据快速转换为可以在C#中操作的格式。

1. NPOI简介

NPOI是一个用于操作Microsoft Office格式文件的开源库,支持读写Excel、Word等文件格式。通过NPOI,程序员可以轻松地**读写Excel文件**,而无需安装Microsoft Office软件。NPOI支持两种Excel格式:XLS(Excel 97-2003)和XLSX(Excel 2007及以上)。

在使用NPOI库之前,需要进行项目的引用。可以使用NuGet包管理器安装NPOI库,执行命令如下:

C#使用npoi读取excel到DataSet

Install-Package NPOI

2. 读取Excel文件到DataSet

在实际开发中,DataSet用于存储多个数据表及其之间的关系,因此将Excel数据读取到DataSet中,非常适合进行数据处理和分析。以下是具体的实现步骤。

2.1. 创建DataSet和DataTable

开始之前,我们需要创建一个DataSet实例来存储Excel中的数据。通常,一个Excel工作表对应一个DataTable。

DataSet dataSet = new DataSet();

对于每个工作表,我们将创建对应的DataTable。每个DataTable的列可以根据Excel表头进行定义。

2.2. 打开Excel文件

利用NPOI读取Excel文件,需要加载相应的工作簿,根据文件类型选择相应的类。对于XLSX文件,可以使用XSSFWorkbook。

using (FileStream file = new FileStream("path/to/your/excel.xlsx", FileMode.Open, FileAccess.Read)) 

{

XSSFWorkbook workbook = new XSSFWorkbook(file);

}

2.3. 遍历工作表

在打开工作簿后,逐个遍历每个工作表,提取数据并将其填充到DataTable中。

for (int i = 0; i < workbook.NumberOfSheets; i++) 

{

ISheet sheet = workbook.GetSheetAt(i);

DataTable dataTable = new DataTable(sheet.SheetName);

// 这里可以添加列

}

2.4. 读取行和列数据

每个工作表有多行,每一行有多个单元格。我们需要遍历每一行,提取单元格数据并将其添加到DataTable对应的行中。

for (int row = 0; row <= sheet.LastRowNum; row++) 

{

IRow currentRow = sheet.GetRow(row);

DataRow dataRow = dataTable.NewRow();

// 这里读取单元格数据

}

为了确保代码的可读性,建议对每一列的数据类型进行判断,并进行相应的转换。例如,可以使用如下代码来读取单元格的值:

for (int col = 0; col < currentRow.LastCellNum; col++) 

{

ICell cell = currentRow.GetCell(col);

dataRow[col] = cell != null ? cell.ToString() : string.Empty;

}

3. 完整代码示例

以下是一个完整的示例代码,通过此代码可以将Excel数据读取到DataSet中:

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel;

using System;

using System.Data;

using System.IO;

class Program

{

static void Main()

{

DataSet dataSet = new DataSet();

using (FileStream file = new FileStream("path/to/your/excel.xlsx", FileMode.Open, FileAccess.Read))

{

XSSFWorkbook workbook = new XSSFWorkbook(file);

for (int i = 0; i < workbook.NumberOfSheets; i++)

{

ISheet sheet = workbook.GetSheetAt(i);

DataTable dataTable = new DataTable(sheet.SheetName);

// 读取表头

IRow headerRow = sheet.GetRow(0);

for (int col = 0; col < headerRow.LastCellNum; col++)

{

dataTable.Columns.Add(headerRow.GetCell(col).ToString());

}

// 读取每一行数据

for (int row = 1; row <= sheet.LastRowNum; row++)

{

IRow currentRow = sheet.GetRow(row);

DataRow dataRow = dataTable.NewRow();

for (int col = 0; col < currentRow.LastCellNum; col++)

{

ICell cell = currentRow.GetCell(col);

dataRow[col] = cell != null ? cell.ToString() : string.Empty;

}

dataTable.Rows.Add(dataRow);

}

dataSet.Tables.Add(dataTable);

}

}

}

}

当上述代码执行后,Excel中的各个工作表数据就会顺利地导入到DataSet中,供后续的数据处理使用。

4. 小结

通过本篇文章的介绍,我们详细了解了如何使用NPOI库将Excel文件中的数据读取到C#中的DataSet中。NPOI为我们处理Excel文件提供了极大的便利,能够高效地管理和操作数据。

希望通过本文的学习,能够帮助读者在项目中更好地使用NPOI来处理Excel数据,从而提高开发效率和应用程序的性能。

相关内容

  • Excel怎么实现对角线单元格选取
  • 在使用Excel的过程中,许多人常常会遇到对角线单元格选取的问题。特别是在制作表格或者进行数据分析时,对角线单元格的选取可以使表格看起来更加美观和整洁。本文将为...
  • 2024-11-04 15:15:03

    1

  • Word如何插入梯形
  • 在日常的办公和学习中,Microsoft Word是一个非常常用的文档处理工具。由于其强大的功能,用户可以轻松地插入各种形状以增强文档的视觉效果。其中,梯形的插...
  • 2024-11-13 15:09:14

    1

  • 希沃白板导入PPT的操作步骤
  • 希沃白板作为一款功能强大的教学辅助工具,能够有效提升教学效率和学员的学习体验。随着信息化教育的推进,越来越多的教师选择将PPt导入希沃白板,以实现更加生动、有趣...
  • 2024-12-01 12:32:06

    1

  • 在Excel中制作圆形柱状比例图
  • 在数据可视化中,柱状图是一种常见且有效的展示方式,而圆形柱状比例图则不同,它结合了柱状图的效果和圆形图形的美观性。本文将详细介绍如何在Excel中制作圆形柱状比...
  • 2024-11-22 14:44:29

    1

  • 漫步者LolliPodsPro防水效果怎么样
  • 漫步者(Edifier)作为一家知名的音频产品制造商,其推出的LolliPods Pro耳机在众多消费者中备受关注。除了其音质及设计外,防水效果也成为了用户关注...
  • 2024-12-10 17:20:16

    1

  • 如何用Excel表格制作二维码
  • 二维码作为一种便捷的信息传递方式,已广泛用于各类场合,如广告、名片、商品包装等。通过二维码,人们可以快速获取链接、文本或其他信息。在今天的文章中,我们将学习如何...
  • 2024-11-27 18:08:49

    1