场景

首先打开一个excel文件,然后获取其路径,获取第一行作为DataTable的标题栏。

然后从第二行到最后一行作为显示的数据。

参考Excel的导出

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100063457

NPOI相关Lib中各种dll文件下载

https://download.csdn.net/download/badao_liumang_qizhi/11608830

示例代码下载

https://download.csdn.net/download/badao_liumang_qizhi/11612098

实现

在上面进行Excel的导出时,只添加了NPOI的引用,在进行导入时还要添加如下引用。

然后添加一个按钮,用来打开要导入的excel文件。

在其点击事件中

private void button3_Click(object sender, EventArgs e){OpenFileDialog fileDialog = new OpenFileDialog();fileDialog.Multiselect = true;fileDialog.Title = "请选择文件";fileDialog.Filter = "所有文件(*xls*)|*.xls*"; //设置要选择的文件的类型if (fileDialog.ShowDialog() == DialogResult.OK){localFilePath = fileDialog.FileName;//返回文件的完整路径               }MessageBox.Show("打开成功要导入的文件路径为:"+localFilePath);}

其中localFilePath 是全局变量用来存储要导入的文件路径。

string localFilePath = "";

要导入的文件内容

效果

然后在下面导入Excel的按钮的点击事件中

private void button2_Click(object sender, EventArgs e){ISheet sheet = null;DataTable data = new DataTable();IWorkbook workbook = null;int startRow = 0;try{//获取文件名,不带路径string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);//以文件流的形式打开文件fs = new FileStream(localFilePath, FileMode.Open, FileAccess.Read);// 2007版本if (fileNameExt.IndexOf(".xlsx") > 0)workbook = new XSSFWorkbook(fs);// 2003版本else if (fileNameExt.IndexOf(".xls") > 0)workbook = new HSSFWorkbook(fs);if (fileNameExt != null){sheet = workbook.GetSheet("sheet1");//如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheetif (sheet == null){sheet = workbook.GetSheetAt(0);}}else{sheet = workbook.GetSheetAt(0);}if (sheet != null){IRow firstRow = sheet.GetRow(0);//第一行最后一个cell的编号 即第一行总的列数int cellCount = firstRow.LastCellNum;for (int i = firstRow.FirstCellNum; i < cellCount; ++i){ICell cell = firstRow.GetCell(i);if (cell != null){string cellValue = cell.StringCellValue;if (!string.IsNullOrEmpty(cellValue)){//设置DataTable的第一行的显示内容即标题行DataColumn column = new DataColumn(cellValue);data.Columns.Add(column);}}}//excel表格中的第一行作为dataTable的标题//所以从第二行开始startRow = sheet.FirstRowNum+1;//获取最后一行的标号int rowCount = sheet.LastRowNum;for (int i = startRow; i <= rowCount; ++i){IRow row = sheet.GetRow(i);//没有数据的行默认是null  if (row == null) continue;      DataRow dataRow = data.NewRow();for (int j = row.FirstCellNum; j < cellCount; ++j){//同理,没有数据的单元格都默认是nullif (row.GetCell(j) != null)dataRow[j] = row.GetCell(j).ToString();}data.Rows.Add(dataRow);}}}catch (Exception ex){Console.WriteLine("Exception: " + ex.Message);}//设置数据源this.dataGridView1.DataSource = data;}

效果

Winform中使用NPOI实现Excel导入并赋值给DataTable相关推荐

  1. Winform中通过NPOI导出Excel时通过ICellStyle和IDataFormat格式化日期显示格式

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  2. Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载

    场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...

  3. Winform中使用NPOI导出Excel时XSSFWorkbook wb = new XSSFWorkbook()报错

    场景 在使用NPOI导出xlsx格式的Excel时提示: NPOI.POIXMLException类型的未经处理的异常在NPOI.OOXML.dll中发生. 注: 博客主页: https://blog ...

  4. Winforn中通过NPOI导出Excel时通过XSSFClientAnchor和XSSFPicture添加图片

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  5. C# 使用 NPOI 处理Excel导入单元格内容是公式问题

    C# 使用 NPOI 处理Excel导入单元格内容是公式问题 引言:今天在处理业务的时候,碰到导入Excel数据不成功的问题,那么就在这里做下笔记吧. 首先,我们有以下的数据.整块业务逻辑的代码在最后 ...

  6. SpringBoot中使用Easyexcel实现Excel导入导出功能(三)

    导出的数据包含有图片 导出excel表格的数据包含有图片,这种场景比较少.通Easyexcel实现这样的需求,我认为最简便的方法就是使用前面提到的自定义转换器(com.alibaba.excel.co ...

  7. SpringBoot中使用Easyexcel实现Excel导入导出功能(一)

    目录 前言 1.常规导入 2.读取到指定的列 3.读取全部的sheet页 4.日期.数字及其他自定义格式的转换 5.表头有多行的表格读取 6.表头数据的读取 7.单元格内的备注内容读取 前言 exce ...

  8. Winform中使用NPOI实现导出Excel并文件另存为

    场景 POI是一套用Java写成的Excel导入导出的库. NPOI就是POI的.NET版本. NPOI官网 https://archive.codeplex.com/?p=npoi NPOI教程 h ...

  9. SpringBoot中使用POI实现Excel导入到数据库(图文教程已实践)

    场景 IDEA中开发SpringBoot项目时需要将Excel模板中数据导入的到数据库. Excel模板如下 实现思想 首先将模板上传到服务器中某路径,并将当前路径存储,然后使用POI自带的 工具类获 ...

最新文章

  1. java纯粹面向对象_Java的面向对象特征
  2. NBA史上薪水最高球员排行榜
  3. dine with the dean judge business school
  4. 当我们在谈论 Deep Learning:AutoEncoder 及其相关模型
  5. 什么样的人去贷款最受银行欢迎?
  6. 怎么取消自动格式化_iPhone自动扣费怎么取消?App Store、微信、支付宝关闭自动扣费教程...
  7. Analyzer报表结果行
  8. oracle数据库安装HotSpot,Oracle准备将Java虚拟机 JRockit 和 Hotspot 集成
  9. Magento教程 1:免费购物车系统,轻松建立Magento第一步!
  10. Word Count Example of Hadoop V1.0 – Mapper的实现
  11. 如何更改计算机屏幕分辨率,如何修改电脑默认屏幕分辨率
  12. 第22.7节 性能篇-使用八叉树结构来管理场景
  13. html区分手机和电脑,移动端和pc端的区别是什么
  14. vs2017安装失败解决
  15. Babylonjs 官网demo预览图合集整理 带说明
  16. SFM方向开源软件COLMAP代码分析
  17. vc++之windows api
  18. 声声不息,新“声”报到
  19. C语言——初识关键字、static、#define定义、指针
  20. 参数服务器——分布式机器学习的新杀器

热门文章

  1. oracle删除表空间中的表,ORACLE删除表空间中的所有表
  2. python 返回函数对象_返回函数
  3. 简述python中怎样导入模块_12 python中模块和包如何导入
  4. ftp shell lcd不起作用
  5. textarea 聚焦后边框_textarea焦点的用法实现获取焦点清空失去焦点提示效果
  6. delete hive_「挑战30万年薪」 Hive语句详解之从SQL到HQL的应转习惯
  7. 7 centos ssh 单机_centos7单机安装kafka
  8. 安装百分之80卡住_石家庄铜铝80*80散热器品牌
  9. Clustering Coefficient
  10. scala -cp file.jar filename的案例