http://www.cnblogs.com/yinrq/p/5590970.html

.NET NPOI导出Excel详解

NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件。

支持的文件格式包括xls, doc, ppt等。

官方网站:http://npoi.codeplex.com/

nuget直接获取使用

一、NPOI生成Excel

            //创建工作薄var workbook = new HSSFWorkbook();//创建表var table = workbook.CreateSheet("joye.net");//模拟20行20列数据for (var i = 0; i < 20; i++){var row = table.CreateRow(i);for (int j = 0; j < 20; j++){var cell = row.CreateCell(j);cell.SetCellValue(j);}}//打开xls文件,如没有则创建,如存在则在创建是不要打开该文件using (var fs = File.OpenWrite(@"c:/joye.net.xls")){workbook.Write(fs);   //向打开的这个xls文件中写入mySheet表并保存。Console.WriteLine("生成成功");}

二、NPOI读取Excel

using (var fs = File.OpenRead(@"c:/joye.net.xls")) {//把xls文件中的数据写入workbook1中var workbook1 = new HSSFWorkbook(fs);for (var i = 0; i < workbook1.NumberOfSheets; i++){var sheet = workbook1.GetSheetAt(i);for (var j = 0; j <= sheet.LastRowNum; j++){   //读取当前行数据var row = sheet.GetRow(j);if (row != null){for (var k = 0; k <= row.LastCellNum; k++){   //当前表格var cell = row.GetCell(k);if (cell != null){Console.Write(cell.ToString() + "  ");}}}Console.WriteLine();}}}

读出的结果

三、简单学习

 学习代码
 代码调用

四、NPOI导出Excel 65536问题

        public static HSSFWorkbook BuildWorkbook(DataTable dt){var book = new HSSFWorkbook();  ISheet sheet = book.CreateSheet("Sheet1");//Data Rowsfor (int i = 0; i < dt.Rows.Count; i++){IRow drow = sheet.CreateRow(i);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}//自动列宽for (int i = 0; i <= dt.Columns.Count; i++)sheet.AutoSizeColumn(i, true);return book;}

NPOI导出Excel超过65536会报异常,原来是由于NPOI这个动态库导致的,然后看了下版本,发现是1.2.5。然后百度了下,发现这个版本的NPOI只支持office2003,二office2003最多支持65536行

解决方式:

1、只是在插入数据的时候,加个判断,如果数据条数大于65536时,就在创建一个sheet

        //65536判断处理public static HSSFWorkbook BuildWorkbook(DataTable dt){var book = new HSSFWorkbook();ISheet sheet1 = book.CreateSheet("Sheet1");ISheet sheet2 = book.CreateSheet("Sheet2");//填充数据for (int i = 0; i < dt.Rows.Count; i++){if (i < 65536){IRow drow = sheet1.CreateRow(i);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}if (i >= 65536){IRow drow = sheet2.CreateRow(i - 65536);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}}//自动列宽for (int i = 0; i <= dt.Columns.Count; i++){sheet1.AutoSizeColumn(i, true);sheet2.AutoSizeColumn(i, true);}return book;}

2、考虑使用高版本Office,使用用对象支持高版本的NPOI

        //高版本public static XSSFWorkbook BuildWorkbook(DataTable dt){var book = new XSSFWorkbook();ISheet sheet = book.CreateSheet("Sheet1");//Data Rowsfor (int i = 0; i < dt.Rows.Count; i++){IRow drow = sheet.CreateRow(i);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}//自动列宽for (int i = 0; i <= dt.Columns.Count; i++)sheet.AutoSizeColumn(i, true);return book;}

五、web开发中导出Excel

        public static void ExportExcel(DataTable dt, string fileName = ""){//生成ExcelIWorkbook book = BuildWorkbook(dt);//web 下载if (fileName == "")fileName = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now);fileName = fileName.Trim();string ext = Path.GetExtension(fileName);if (ext.ToLower() == ".xls" || ext.ToLower() == ".xlsx")fileName = fileName.Replace(ext, string.Empty);HttpResponse httpResponse = HttpContext.Current.Response;httpResponse.Clear();httpResponse.Buffer = true;httpResponse.Charset = Encoding.UTF8.BodyName;httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");httpResponse.ContentEncoding = Encoding.UTF8;httpResponse.ContentType = "application/vnd.ms-excel; charset=UTF-8";book.Write(httpResponse.OutputStream);httpResponse.End();}

基于.xls模板生成Excel文件有时间再看

代码下载:https://yunpan.cn/cRBVnTCSchz7k (提取码:779e)

+ 关注

转载于:https://www.cnblogs.com/lacey/p/6634004.html

.NET NPOI导出Excel详解相关推荐

  1. C#NPOI导出Excel详解

    C#NPOI导出Excel详解 开发工具与技术:工具:Visual Studio/C#.Net,技术:C# 作者:刘胜 撰写时间:2019-05-08 NPOI简介 NOP是一个开源的C#读写Exce ...

  2. poi导出excel详解

    创建模板-------放到maven工程-----sec/main/resources/model目录下 第一步:在maven中导入poi 依赖 第二步:controller层 /*** 体检对账对账 ...

  3. linux下java导出execl_POI实现导出EXCEL详解

    1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...

  4. vue-json-excel 使用方法 导出excel 详解 以及实际操作 ,通俗易懂

    vue-json-excel 的具体使用方法 1安装 npm install vue-json-excel -S 2在main.js中注册使用 import JsonExcel from 'vue-j ...

  5. Java 实现查询数据库下载导出Excel详解

    Excel表头 测试→下载导出表头文件,也可以改成直接存到本地磁盘目录下. package com.kero99.utils;import java.io.File; import java.io.F ...

  6. java中使用poi导出Excel详解,kotlin音标

    到这个问题,可以设置encoding为双字节.POI可以到www.apache.org下载到. 编译好的jar主要有这样4个:poi包, poi Browser包, poi hdf包, poi hss ...

  7. 【转】用VB操作Excel详解

    用VB操作Excel详解 一. VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1.在工程中引用MicrosoftExcel 类型库: 从"工程"菜 ...

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

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

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

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

最新文章

  1. 图融合GCN(Graph Convolutional Networks)
  2. (转载)你好,C++(7)第三部分 C++世界众生相 3.2.1 变量的定义与初始化
  3. 第一个Struts2程序
  4. 《复杂》读书笔记(part5)--复杂性度量
  5. leetcode42 --- trap
  6. python 分类变量回归_极简Python带你探索分类与回归的奥秘
  7. Linux新建yaml文件,Spring Boot 装载自定义yml文件
  8. 哪些因素会影响数据质量
  9. 1091 N-自守数 (15 分)—PAT (Basic Level) Practice (中文)
  10. java接口 数据_一步步学习java后台(三)(接口返回数据处理)
  11. python生成倒计时图片_用Python自动化生成新年倒计时图片
  12. Unity Shader Alpha Blend 填坑记录
  13. 互联网日报 | 前11月全国网购超10万亿元;B站8月月活首次突破2亿;华为Mate40标准版开启预售...
  14. 微信公众号支付 java_微信支付之公众号支付(java实现)
  15. 第三章第二十一题(科学:某天是星期几)(Science: day of the week)
  16. 分享四款实用流程图模板
  17. mysql 省份城市县区数据表SQL(包含经纬度)
  18. uni-app 图片上传插件使用说明
  19. 微信公众号html在线编辑器,【微信公众平台工具开发】雷人微信网页编辑器
  20. 关闭WIN7交互式服务检测提示

热门文章

  1. C# 实现一个可取消的多线程操作 示例
  2. VS2015 Cordova Ionic移动开发(五)
  3. 定义jQuery插件
  4. 有空研究这篇http://blog.csdn.net/studyvcmfc/article/details/7720258 研究后写篇记录
  5. spoj 2 Prime Generator
  6. VB数据库经典实例总结(二)
  7. 长春南关区净月大街附近都有哪些课后班?
  8. 网站漏洞检测针对区块链网站安全分析
  9. centos7.4二进制安装mysql
  10. html5--3.16 button元素