C#使用NPOI上传excel
作者:勤奋的小鑫0 时间:2022-05-20 14:46:22
写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题
我使用的NPOI版本是2.2.1.0版本
需要用到的命名空间
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
首先需要读取excel文件中的内容转为表格
string path为excel表格文件的在本地的地址
Stream fs为上传文件的流可以根据Request.Files[0].InputStream 获得
public DataTable GetexcelDataSet(string path, Stream fs)
{
IWorkbook workbook = null;
if (path.IndexOf(".xlsx") > 0)
{
workbook = new XSSFWorkbook(fs);//excel的版本2007
}
else if (path.IndexOf(".xls") > 0)
{
workbook = new HSSFWorkbook(fs);//excel的版本2003
}
ISheet sheet = workbook.GetSheetAt(0);//得到第一张表
DataTable table = new DataTable();
IRow headerRow = sheet.GetRow(0);//第一行为标题行
int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);//添加行标题
}
for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
{
IRow row = sheet.GetRow(i);
DataRow dataRow = table.NewRow();
if (row != null)
{
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j);
}
}
table.Rows.Add(dataRow);
}
return table;
}
得到dateTable之后就是使用事物循环插入数据库中,这个就不解释了。
标签:C#,NPOI,excel
0
投稿
猜你喜欢
Java 如何使用Velocity引擎生成代码
2023-10-19 23:15:34
退出Android程序时清除所有activity的实现方法
2021-10-09 23:49:30
Java中Date和Calendar常用方法
2023-11-12 07:35:32
SpringCloud-Alibaba-Nacos启动失败解决方案
2023-12-19 05:34:45
SpringBoot整合log4j2日志的实现
2021-11-14 23:41:01
Springboot项目全局异常统一处理案例代码
2021-08-26 10:51:19
Android集成微信登录的步骤详解
2023-01-12 15:12:45
Android详解之NoHttp最基本使用(无封装)
2022-09-28 17:11:51
Java中JDBC连接数据库详解
2023-08-10 16:57:18
JAVA NIO实现简单聊天室功能
2023-05-01 10:32:49
java实现面板之间切换功能
2021-12-03 15:06:39
Git设置和取消代理的方法
2021-06-25 21:47:10
SpringBoot yml配置文件读取方法详解
2022-12-13 18:04:19
spring boot集成p6spy的最佳实践
2023-04-11 23:40:36
安卓Android Context类实例详解
2023-04-26 14:40:59
Java 十大排序算法之归并排序刨析
2022-03-15 17:29:20
异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
2023-12-17 01:03:21
实例详解MyBatis-plus自动填充功能
2023-06-17 14:14:36
浅谈对Java双冒号::的理解
2023-09-20 02:19:21
SpringBoot如何实现word文档转pdf
2023-04-19 09:33:55