您的位置:首页 > 编程语言 > C#

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

2018-03-20 10:32 661 查看
    上篇博文中已经介绍了如何写入Excel文件。这篇再介绍一下 如何从Excel中读取数据并保存到DataGridView中。

从Excel中读取数据并保存至DataGridView中,Excel文件第一行为表格列标题,从第二行开始为数据。
需要了解的内容有:

引入命名空间;
创建文件流;
创建与文件对应的workbook;
获取sheet;
获取行row;
获取单元格cell;
获取单元格的值
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(0);//获取第一个工作表
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 = 0;//记录Excel中的行数
int colCount = 0;//记录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(0);
if (sheet == null)
{
result = false;
return result;
}
rowCount = sheet.LastRowNum;
colCount = sheet.GetRow(0).LastCellNum;
dataGridView.Rows.Clear();
dataGridView.Columns.Clear();
for (int j = 0; j < colCount; j++) //列循环
{
ICell cell = sheet.GetRow(0).GetCell(j);//获取列
dataGridView.Columns.Add(j.ToString()+ cell.ToString(), cell.ToString());
}
for (int i = 1; i < rowCount; i++) //行循环
{
IRow row = sheet.GetRow(i); //获取i行
int index = dataGridView.Rows.Add();
colCount = row.LastCellNum;
for (int j = 0; 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.csdn.net/nicewe/article/details/79620280

本文的源文件程序(Visual Studio 2017)与NPOI.DLL文件下载地址:https://download.csdn.net/download/nicewe/10296960
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# 电子表格