欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-23 19:35:28
...

    上篇博文中已经介绍了如何写入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(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# 电子表格