NPOI读取Excel

摘要:
2stringfileExt=路径.GetExtension(路径);15dt.列.添加(dc);i++)19{20IRowrow=sheet.GetRow(i);21DataRowdr=dt.NewRow();j<j++)23{24objectobj=row.GetCell(j);=null)26dr[j]=obj.ToString();

项目环境:Webform framework4.0

dll版本:NPOI2.0  dotnet2.0版本

这两天要做个excel导入的功能,想到以前用过NPOI,感觉很给力,今天写了个DEMO,写的时候还算顺利,毕竟以前用过,还是想记录下来,留着以后直接复制

把excel数据读取并拼接到DataTable中,为了使用SqlBulkCopy一次性拷贝到数据库中

NPOI读取Excel第1张NPOI读取Excel第2张
 1             IWorkbook workbook = null;
 2             string fileExt = Path.GetExtension(path);
 3             try
 4             {
 5                 using (var file = new FileStream(path, FileMode.Open, FileAccess.Read))
 6                 {
 7                     if (fileExt == ".xls")
 8                         workbook = new HSSFWorkbook(file);
 9                     else if (fileExt == ".xlsx")
10                         workbook = new XSSFWorkbook(file);
11                     else
12                     {
13 
14                     }
15                 }
16             }
17             catch (Exception ex)
18             { }
View Code
NPOI读取Excel第3张NPOI读取Excel第4张
 1 //获取sheet页
 2             var sheet = workbook.GetSheetAt(0);
 3             //获取总条数
 4             int RowCount = sheet.LastRowNum;
 5             //获取sheet页的第一条数据
 6             IRow firstRow = sheet.GetRow(0);
 7             //获取总列数
 8             int CellCount = firstRow.LastCellNum;
 9 
10             DataTable dt = new DataTable();
11             for (int j = 0; j < CellCount; j++)
12             {
13                 string value = firstRow.GetCell(j).StringCellValue;
14                 DataColumn dc = new DataColumn(value, typeof(String));
15                 dt.Columns.Add(dc);
16             }
17 
18             for (int i = 1; i <= RowCount; i++)
19             {
20                 IRow row = sheet.GetRow(i);
21                 DataRow dr = dt.NewRow();
22                 for (int j = 0; j < CellCount; j++)
23                 {
24                     object obj = row.GetCell(j);
25                     if (obj != null)
26                         dr[j] = obj.ToString();
27                     else
28                         dr[j] = "";
29                 }
30                 dt.Rows.Add(dr);
31             }
View Code

最后使用SqlBulkCopy

SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulkcopy.DestinationTableName = "Table_1";//数据库中的表名
sqlbulkcopy.WriteToServer(dataset.Tables[0]);

免责声明:文章转载自《NPOI读取Excel》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇跨域的另一种解决方案——CORS(Cross-Origin Resource Sharing)跨域资源共享PHP 使用 header 方式实现文件下载功能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IO多路复用

IO模型介绍                                           为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞     同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问...

Oracle学习(11):PLSQL程序设计

PL/SQL程序结构及组成 什么是PL/SQL? •PL/SQL(Procedure Language/SQL) •PLSQL是Oracle对sql语言的过程化扩展 •指在SQL命令语言中添加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。 SQL长处 交互式非过程化。 数据操纵功能强; 自己主动导航语句简单; 调试ea...

python学习笔记(九)内置函数

1 print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 True 2 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 True 3 4 print(bin(10))#十进制转二进制 5 ejz=bin(100) #0b1010 6 print(ejz.replace('0...

解惑:对SQL Server分区进行合并(删除)

一、准备 在SQL Server 2005版本之后就有了表分区的概念与应用,在分区操作里面有一个叫做合并分区的功能,也被称为删除分区。分区所处的文件组和文件是不会被删除的,只会对数据进行转移合并。合并分区时需要注意所带来的IO问题。 合并分区常见情景:发现某个分区的数据很少,为了方便管理可以考虑合并分区。需要进行统计、四则运算的时候也可以考虑合并分区,这种...

Teamcenter案例展示

01项目背景 为了满足竞争日益激烈的多元化市场需求,工艺设计周期短、任务重,同时对工艺设计质量及投产周期提出了更高的要求。但目前工艺系统主要侧重于结果管理(文档),制约业务能力的提升: 1)  依靠检查表、标杆库等文件或个人经验分析产品的工艺可行性,缺少有效的工具、方法, 产品设计阶段工艺可行性分析不充分,在NC阶段后提出大量变更; 2) 工艺设计与验证:...

【微信小程序】在swiper-item使用wx:for时出现的问题

代码如下: wxml: <!--pages/mall/mall.wxml--> <view class="contianer"> <view class="swiper"> <swiper display-multiple-items="{{swiper_pictures.length}}" indic...