发现问题:

最近运行程序时,发现了一个问题,就是在导出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. 轰炸III(codevs 1830)

    题目背景 一个大小为N*M的城市遭到了X次轰炸,每次都炸了一个每条边都与边界平行的矩形. 题目描述 在轰炸后,有Y个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮. ...

  2. codevs1009 产生数

    题目描述 Description 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如:n=234.有规 ...

  3. java中普通的顶级类是不能使用static关键字修饰的。只有内部类可以使用static修饰,也可以不使用staitc关键字修饰。

    java中普通的顶级类是不能使用static关键字修饰的.只有内部类可以使用static修饰,也可以不使用staitc关键字修饰. java中的类可以是static吗?答案是可以.在java中我们可以 ...

  4. 【分享】迅为iTOP4412开发板-Android系统屏幕旋转设置

    1.1概述 Android4.0,Androd4.4源代码能够编译成手机模式和平板模式,讯为iTop4412 开发平台 的Android系统默认编译为平板模式.客户须要依据自己的产品设计及应用环境,切 ...

  5. 多个线程对hashmap进行put操作的异常

    多个线程对hashmap进行put操作的异常 Exception in thread "Thread-0" java.lang.ClassCastException: java.u ...

  6. oracle11g dataguard failover重建后归档日志没有被应用被NO的问题

    1.主库从库归档记录不一致.例如以下所看到的: 做完failover后,坏的旧主库变成了新的从库,可是新从库的归档日志记录不一致,就是archive log list;出来的和v$archived_l ...

  7. HDU 5305(Friends-暴搜)

    Friends Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  8. nmap,port扫描,获取sshserver的ip地址

    // 查看局域网的ip地址 arp - a // 同一个网段.假设用虚拟机桥接则不行 sudo nmap -sS 192.168.1.* //或者sudo nmap -sS -p 22 192.168 ...

  9. scikit-learn:4.7. Pairwise metrics, Affinities and Kernels

    參考:http://scikit-learn.org/stable/modules/metrics.html The sklearn.metrics.pairwise submodule implem ...

  10. Mahout--(一)数据承载

    mahout API英文解释:https://builds.apache.org/job/Mahout-Quality/javadoc/ 推荐数据的处理是大规模的,在集群环境下一次要处理的数据可能是数 ...