NPOI 导出xlsx 出现的问题解决方案

  • 出现的问题

出现的问题

在使用NPOI 导出 Excel为 xlsx 格式的文件时候。使用 stream 流来输出,会出现 “Can not access a closed Stream” 的报错。

这是因为:XSSF类在 workbook.write(ms) 后,就会自动关闭这个 MemoryStream. 所以导致了这个错误

解决方案:不导出xlsx文件,导出xls就好
因为 2000版本的 Excel文件最多支持的行数有限,而且现在大多都是 2007版本,所以我们就要导出 2007版本的 Excel (也就是文件后缀为 xlsx 的)

那么,要怎么办?

解决思路如下:

  1. 创建一个类,继承自MemoryStream
  2. 重写 Close 方法
  3. 给上属性,控制其关闭方式,不让它被自动关闭

具体代码如下:

public class MemoryStreamHelper : MemoryStream{public MemoryStreamHelper(){AllowClose = true;}public bool AllowClose { get; set; }public override void Close(){if (AllowClose)base.Close();}}

在使用的时候,我们创建的不是 MemoryStream ,而是这个就可以了。
例如:

using (MemoryStreamHelper ms = MemoryStreamHelper()){ms.AllowClose = false;workbook.Write(ms);workbook.Close();ms.Flush();ms.Position = 0;ms.AllowClose = true;return ms;}

使用 using 是为了更好的回收资源,避免资源过多,导致出意外

NPOI 导出xlsx 出现的问题解决方案相关推荐

  1. .net开发时用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到“部分内容有问题”的报错

    项目场景: 提示:这里简述项目相关背景: .NET 开发 C# 问题描述 用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到"部分内容有问题"的报错 原因分析: 写 ...

  2. NPOI导出Word插入图片问题解决方案

    NPOI用版本2.2.0或者2.2.1时导出Word插入图片时,word文档打开报错 解决方案之一:用NPOI 2.1.3版本可以解决 XWPFDocument doc = new XWPFDocum ...

  3. Winform中使用NPOI导出Excel时XSSFWorkbook wb = new XSSFWorkbook()报错

    场景 在使用NPOI导出xlsx格式的Excel时提示: NPOI.POIXMLException类型的未经处理的异常在NPOI.OOXML.dll中发生. 注: 博客主页: https://blog ...

  4. NPOI 导出 excel 性能测试

    NPOI 导出 excel 性能测试 Intro 网上看到很多人说 NPOI 的性能不行,自己写了一个 NPOI 的扩展库,于是想尝试看看 NPOI 的性能究竟怎么样,道听途说始终不如自己动手一试. ...

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

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

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

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

  7. c#NPOI导出2007版本excel

    2003和2007版本区别: HSSFWorkbook(2003) IWorkbook(2007版本) 写完之后会有个问题,导出会报错[流已关闭]. NPOI生产.xlsx文件件时,在使用book.W ...

  8. .NET Core使用NPOI导出复杂Word详解

    最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多.最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架 ...

  9. .NET NPOI导出Excel详解

    http://www.cnblogs.com/yinrq/p/5590970.html .NET NPOI导出Excel详解 NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是 ...

最新文章

  1. 2022-2028年中国出行O2O市场深度调研及投资前景预测报告
  2. NOIP2013普及组 T2 表达式求值
  3. CSS浏览器兼容问题集-第四部分
  4. Linux实时查看进程命令top笔记
  5. 解决EF 4.0 中数据缓存机制
  6. 如何分割合并ISO文件
  7. redis集群断电数据怎么恢复_如何做到 10T 集群数据安全备份、1GB/s 快速恢复?...
  8. 我整理的一个经典分页程序(JSP的)
  9. 鸿蒙系统首批更新名单,鸿蒙系统首批升级名单是哪些-鸿蒙系统首批升级名单详细介绍 - 系统家园...
  10. PreferenceScreen 中如何自定义SwitchPreferenceCompat的布局
  11. 【游戏】[C++] 贪吃蛇控制台版
  12. 深蓝儿童破解2012世界末日预言(转)
  13. CortexM3/M4(3)-指令集
  14. 微积分小糊涂,国庆节大快乐!
  15. 手机免费使用PDF编辑器一键支持PDF转Word,随时随地处理文档
  16. ESP32-CAM视频流
  17. Bandzip与360压缩
  18. 2019 CSP-J/S第一轮各省分数线统计与分析(含浙江省)
  19. Swift将改变一切
  20. 案例一,家庭收支记账软件

热门文章

  1. Eclipse版本号的区别
  2. 6.3.3Transmit ONOFF time mask
  3. 汽车行业SAP性能分析解决方案
  4. sophus编译错误,未定义相关函数
  5. python做数据处理软件_程序员用于机器学习编程的Python 数据处理库 pandas 入门教程...
  6. 基于MSP430智能小车的设计
  7. u盘做成了启动盘后,如何复原
  8. 胸部肌肉训练(附图)
  9. 简单四步開始树莓派上的Docker之旅
  10. 双十一数据造假?如何用二元一次方程给马爸爸找回面子!