Winform中使用NPOI实现Excel导入并赋值给DataTable
场景
首先打开一个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相关推荐
- Winform中通过NPOI导出Excel时通过ICellStyle和IDataFormat格式化日期显示格式
场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...
- Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载
场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...
- Winform中使用NPOI导出Excel时XSSFWorkbook wb = new XSSFWorkbook()报错
场景 在使用NPOI导出xlsx格式的Excel时提示: NPOI.POIXMLException类型的未经处理的异常在NPOI.OOXML.dll中发生. 注: 博客主页: https://blog ...
- Winforn中通过NPOI导出Excel时通过XSSFClientAnchor和XSSFPicture添加图片
场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...
- C# 使用 NPOI 处理Excel导入单元格内容是公式问题
C# 使用 NPOI 处理Excel导入单元格内容是公式问题 引言:今天在处理业务的时候,碰到导入Excel数据不成功的问题,那么就在这里做下笔记吧. 首先,我们有以下的数据.整块业务逻辑的代码在最后 ...
- SpringBoot中使用Easyexcel实现Excel导入导出功能(三)
导出的数据包含有图片 导出excel表格的数据包含有图片,这种场景比较少.通Easyexcel实现这样的需求,我认为最简便的方法就是使用前面提到的自定义转换器(com.alibaba.excel.co ...
- SpringBoot中使用Easyexcel实现Excel导入导出功能(一)
目录 前言 1.常规导入 2.读取到指定的列 3.读取全部的sheet页 4.日期.数字及其他自定义格式的转换 5.表头有多行的表格读取 6.表头数据的读取 7.单元格内的备注内容读取 前言 exce ...
- Winform中使用NPOI实现导出Excel并文件另存为
场景 POI是一套用Java写成的Excel导入导出的库. NPOI就是POI的.NET版本. NPOI官网 https://archive.codeplex.com/?p=npoi NPOI教程 h ...
- SpringBoot中使用POI实现Excel导入到数据库(图文教程已实践)
场景 IDEA中开发SpringBoot项目时需要将Excel模板中数据导入的到数据库. Excel模板如下 实现思想 首先将模板上传到服务器中某路径,并将当前路径存储,然后使用POI自带的 工具类获 ...
最新文章
- java纯粹面向对象_Java的面向对象特征
- NBA史上薪水最高球员排行榜
- dine with the dean judge business school
- 当我们在谈论 Deep Learning:AutoEncoder 及其相关模型
- 什么样的人去贷款最受银行欢迎?
- 怎么取消自动格式化_iPhone自动扣费怎么取消?App Store、微信、支付宝关闭自动扣费教程...
- Analyzer报表结果行
- oracle数据库安装HotSpot,Oracle准备将Java虚拟机 JRockit 和 Hotspot 集成
- Magento教程 1:免费购物车系统,轻松建立Magento第一步!
- Word Count Example of Hadoop V1.0 – Mapper的实现
- 如何更改计算机屏幕分辨率,如何修改电脑默认屏幕分辨率
- 第22.7节 性能篇-使用八叉树结构来管理场景
- html区分手机和电脑,移动端和pc端的区别是什么
- vs2017安装失败解决
- Babylonjs 官网demo预览图合集整理 带说明
- SFM方向开源软件COLMAP代码分析
- vc++之windows api
- 声声不息,新“声”报到
- C语言——初识关键字、static、#define定义、指针
- 参数服务器——分布式机器学习的新杀器
热门文章
- oracle删除表空间中的表,ORACLE删除表空间中的所有表
- python 返回函数对象_返回函数
- 简述python中怎样导入模块_12 python中模块和包如何导入
- ftp shell lcd不起作用
- textarea 聚焦后边框_textarea焦点的用法实现获取焦点清空失去焦点提示效果
- delete hive_「挑战30万年薪」 Hive语句详解之从SQL到HQL的应转习惯
- 7 centos ssh 单机_centos7单机安装kafka
- 安装百分之80卡住_石家庄铜铝80*80散热器品牌
- Clustering Coefficient
- scala -cp file.jar filename的案例