C#使用NPOI上传excel

作者:勤奋的小鑫0 时间:2022-05-20 14:46:22 

写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题

我使用的NPOI版本是2.2.1.0版本

C#使用NPOI上传excel

需要用到的命名空间


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
  • asp之家 软件编程 m.aspxhome.com