C#使用NPOI读取电子表格Excel到DataGridView中

时间:2023-03-09 00:17:59
C#使用NPOI读取电子表格Excel到DataGridView中

上篇博文中已经介绍了如何写入Excel文件。这篇再介绍一下 如何从Excel中读取数据并保存到DataGridView中。

从Excel中读取数据并保存至DataGridView中,Excel文件第一行为表格列标题,从第二行开始为数据。

需要了解的内容有:

  1. 引入命名空间;
  2. 创建文件流;
  3. 创建与文件对应的workbook;
  4. 获取sheet;
  5. 获取行row;
  6. 获取单元格cell;
  7. 获取单元格的值

1.引入命名空间:

本文操作所用到的NPOI中命名空间有:

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

2.创建文件流:

使用FileStream创建文件流FileStream fs = new FileStream(文件路径, 文件操作方式, 文件读写权限);

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);

3.创建于文件对应的workbook:

HSSFWorkbook workbook = new HSSFWorkbook(fs);

4.获取sheet:

ISheet sheet = workbook.GetSheetAt();//获取第一个工作表
ISheet sheet = workbook.GetSheet("Sheet1");//获取指定名称的工作表

5.获取行row:

IRow row = sheet.GetRow(i);  //获取i行

6.获取单元格cell:

ICell cell = row.GetCell(j);//获取j列

7.获取单元格的值:

获取单元格的值直接通过cell的方法cell.ToString()就可以了。

放个例子:

         //------------【函数:从Excel文件读取数据到表格控件】------------
//filePath为Excel文件路径名
//datagGridView要显示数据的表格控件
//------------------------------------------------
public static bool ReadFromExcel(string filePath, DataGridView dataGridView)
{
bool result = true; FileStream fs = null;//创建一个新的文件流
HSSFWorkbook workbook = null;//创建一个新的Excel文件
ISheet sheet = null;//为Excel创建一张工作表 //定义行数、列数
int rowCount = ;//记录Excel中的行数
int colCount = ;//记录Excel中的列数 //判断文件是否存在
if (!File.Exists(filePath))
{
result = false;
return result;
}
//创建指向文件的工作表
try
{
fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
workbook = new HSSFWorkbook(fs);//.xls
if (fs != null)
{
fs.Close();
fs.Dispose();
fs = null;
}
sheet = workbook.GetSheetAt();
if (sheet == null)
{
result = false;
return result;
}
rowCount = sheet.LastRowNum;
colCount = sheet.GetRow().LastCellNum;
dataGridView.Rows.Clear();
dataGridView.Columns.Clear();
for (int j = ; j < colCount; j++) //列循环
{
ICell cell = sheet.GetRow().GetCell(j);//获取列
dataGridView.Columns.Add(j.ToString()+ cell.ToString(), cell.ToString());
}
for (int i = ; i < rowCount; i++) //行循环
{
IRow row = sheet.GetRow(i); //获取i行
int index = dataGridView.Rows.Add();
colCount = row.LastCellNum;
for (int j = ; j < colCount; j++) //列循环
{
ICell cell = row.GetCell(j);//获取j列
dataGridView.Rows[index].Cells[j].Value = cell.ToString();
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
result = false;
return result;
}
return result;
}

如何将Excel内数据读取到DataGridView中,参考上篇博文:http://blog.****.net/nicewe/article/details/79620280

本文的源文件程序(Visual Studio 2017)与NPOI.DLL文件下载地址:https://download.****.net/download/nicewe/10296960