发现问题:

最近运行程序时,发现了一个问题,就是在导出excel时,报了一下错误

分析问题:

原来是由于NPOI这个动态库导致的,然后看了下版本,发现是1.2.5。然后百度了下,发现这个版本的NPOI只支持office2003,二office2003最多支持65536行,找到问题,下面就开始处理问题

解决问题:

从NPOI考虑:继续用这个版本的动态库,只是在插入数据的时候,加个判断,如果数据条数大于65536时,就在创建一个sheet

从office考虑:考虑使用跟高的Office,发现NPOI的2.1.3支持更高版本的office

我的处理方式:

方式一:不换动态库,还是老古董

static void Main(string[] args)
{
IWorkbook wk=new HSSFWorkbook();
ISheet sheet = wk.CreateSheet("StudentK");
ISheet sheet2 = wk.CreateSheet("TeacherL"); Stopwatch sw =new Stopwatch();
sw.Start();
for (int i = 0; i < 75535; i++)
{
if (i<=65535)
{
IRow row = sheet.CreateRow(i);
row.CreateCell(0).SetCellValue("Kimisme");
row.CreateCell(1).SetCellValue(i.ToString());
row.CreateCell(2).SetCellValue(DateTime.Now.ToString("s"));
}
else if (i > 65535)
{
IRow row = sheet2.CreateRow(i-65536);
row.CreateCell(0).SetCellValue("Kimisme");
row.CreateCell(1).SetCellValue(i.ToString());
row.CreateCell(2).SetCellValue(DateTime.Now.ToString("s"));
}
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
sw.Restart();
using (FileStream writer =File.OpenWrite("老古董.xls"))
{
wk.Write(writer);
}
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("ok");
Console.ReadKey();
}

成果图

方式二:我就用新东西

static void Main(string[] args)
{
//改动的地方有两处,这是第一处
IWorkbook wk = new XSSFWorkbook();
ISheet sheet = wk.CreateSheet("FrientS"); Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 75535; i++)
{
IRow row = sheet.CreateRow(i);
row.CreateCell(0).SetCellValue("Kimisme");
row.CreateCell(1).SetCellValue(i.ToString());
row.CreateCell(2).SetCellValue(DateTime.Now.ToString("s"));
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
sw.Restart();
//这是第二处
using (FileStream writer = File.OpenWrite("新事物.xlsx"))
{
wk.Write(writer);
}
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("ok");
Console.ReadKey();
}

成果图:

最后,感谢面向对象,感谢里氏替换原则,理由如下

  • HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls
  • XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx

大数据插入Excel报错处理的更多相关文章

  1. 大数据学习——Linux-SSH报错:Could not resolve hostname centos02: Temporary failure in name resolution

    https://blog.csdn.net/mcb520wf/article/details/83303792 随笔异常 ssh: Could not resolve hostname centos0 ...

  2. POI读写大数据量excel,解决超过几万行而导致内存溢出的问题

    1. Excel2003与Excel2007 两个版本的最大行数和列数不同,2003版最大行数是65536行,最大列数是256列,2007版及以后的版本最大行数是1048576行,最大列数是16384 ...

  3. spring jpa 实体互相引用返回restful数据循环引用报错的问题

    spring jpa 实体互相引用返回restful数据循环引用报错的问题 Java实体里两个对象有关联关系,互相引用,比如,在一对多的关联关系里 Problem对象,引用了标签列表ProblemLa ...

  4. java导出excel报错:getOutputStream() has already been called for this response

    对于java导出excel报错的问题,查了很多都说是在使用完输出流以后调用以下两行代码即可 out.clear(); out = pageContext.pushBody(); 但这也许是页面上输出时 ...

  5. weblogic 12c下jxls导出excel报错Could not initialize class org.apache.poi.xssf.usermodel.XSSFVMLDrawing

    周一,开发反馈weblogic 12c下jxls导出excel报错,公司环境和UAT环境均报错,看日志如下: 2016-06-08 09:16:55,825 ERROR org.jxls.util.T ...

  6. Microsoft.Office.Interop.Excel 报错

    Microsoft.Office.Interop.Excel 报错 引用dll 在以下目录 C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop. ...

  7. 关于导入excel报错的处理(xls,xlsx)

    关于导入excel报错的处理(xls,xlsx) 最近在做一个将excel导入到dataGriview中的小功能在做的过程中遇到以下问题: 链接excel的链接串是这样写的 string strCon ...

  8. .NET 百万级 大数据插入、更新 ,支持多种数据库

    功能介绍  (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...

  9. 记一次 Hibernate 插入数据中文乱码报错解决

    错误描述 程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 ...

随机推荐

  1. [bzoj3191][JLOI2013][卡牌游戏] (概率dp)

    Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字 ...

  2. 【6572】关于mtk平台display模块的学习探讨

    现在在学习mtk的display subsystem,有遇到流程上不太清楚地地方想要询问: 1.cmd模式和video模式framebuffer如何更新, 以及两种模式的差异? cmd和video m ...

  3. dubbo 学习1

    1.高性能优秀的服务框架,应用可通过高性能的RPC实现服务的输出和输入功能,可以和spring框架无缝集成. 2.主要核心部件 a.remoting 网络通信框架 实现了sync-over-asnc ...

  4. cogs——908. 校园网

    908. 校园网 ★★   输入文件:schlnet.in   输出文件:schlnet.out   简单对比 时间限制:1 s   内存限制:128 MB USACO/schlnet(译 by Fe ...

  5. 在docker上安装运行mysql实例

    ps:实验环境是:CentOS Linux release 7.3  64位1.获取mysql镜像从docker hub的仓库中拉取mysql镜像docker pull mysql查看镜像docker ...

  6. sql server internal book

    Frequently Bought Together + + Total price: $131.71 Add all three to CartAdd all three to List Buy t ...

  7. sql-server-internals-architecture

    http://kevinekline.com/slides/sql-server-internals-architecture/

  8. Linux ANSI 乱码问题

    原帖http://blog.chinaunix.net/u/24624/showart_184609.html Windows 到 linux 解决samba-3.x客户端中文乱码问题 dos cha ...

  9. MapR CEO对2016大数据的5个预測

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/mapr-ceo-5-big-data-predictions MapR ...

  10. 数据结构之中序遍历转兴许遍历(JAVA实现)(二)

    算法流程: 主要分为四步: 1.当前字符为数字或者字母,则直接输出 2.当前字符为).则在栈中匹配输出.一直匹配到),则停止输出(就是将)及其顶上的元素所有弹出来输出) 3.当前字符为操作符.则比較当 ...