大数据插入Excel报错处理
发现问题:
最近运行程序时,发现了一个问题,就是在导出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报错处理的更多相关文章
- 大数据学习——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 ...
- POI读写大数据量excel,解决超过几万行而导致内存溢出的问题
1. Excel2003与Excel2007 两个版本的最大行数和列数不同,2003版最大行数是65536行,最大列数是256列,2007版及以后的版本最大行数是1048576行,最大列数是16384 ...
- spring jpa 实体互相引用返回restful数据循环引用报错的问题
spring jpa 实体互相引用返回restful数据循环引用报错的问题 Java实体里两个对象有关联关系,互相引用,比如,在一对多的关联关系里 Problem对象,引用了标签列表ProblemLa ...
- java导出excel报错:getOutputStream() has already been called for this response
对于java导出excel报错的问题,查了很多都说是在使用完输出流以后调用以下两行代码即可 out.clear(); out = pageContext.pushBody(); 但这也许是页面上输出时 ...
- 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 ...
- Microsoft.Office.Interop.Excel 报错
Microsoft.Office.Interop.Excel 报错 引用dll 在以下目录 C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop. ...
- 关于导入excel报错的处理(xls,xlsx)
关于导入excel报错的处理(xls,xlsx) 最近在做一个将excel导入到dataGriview中的小功能在做的过程中遇到以下问题: 链接excel的链接串是这样写的 string strCon ...
- .NET 百万级 大数据插入、更新 ,支持多种数据库
功能介绍 (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...
- 记一次 Hibernate 插入数据中文乱码报错解决
错误描述 程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 ...
随机推荐
- [模拟赛FJOI Easy Round #2][T1 sign] (模拟+求字符串重复字串)
[题目描述] 小Z在无意中发现了一个神奇的OJ,这个OJ有一个神奇的功能:每日签到,并且会通过某种玄学的算法计算出今日的运势.在多次试验之后,小Z发现自己的运势按照一定的周期循环,现在他找到了你,请通 ...
- orcad中注意的事情
1.地的标识不能放到已经分配了网络的线上. 在用orcad画原理图的时候,把电源放到网络的时候需要特别的注意,如果,将电源地直接放到线上,而这根线又已经被分配了网络标号,那这个地会随已经分配了的网络号 ...
- MSSQL获取指定日期的SQL语句
--1.一个月第一天的 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) --2.本周的星期一 SELECT DATEADD(wk,DATEDIFF(wk,0 ...
- 【15】AngularJS 输入验证
AngularJS 输入验证 AngularJS 表单和控件可以验证输入的数据. 输入验证 AngularJS 表单和控件可以提供验证功能,并对用户输入的非法数据进行警告. 客户端的验证不能确保用 ...
- Linux & Filesystem Hierarchy Standard
Linux & Filesystem Hierarchy Standard The Filesystem Hierarchy Standard of Linux https://zhuanla ...
- centos7 安装mongodb3.4 及用户管理
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/1.semanage command not found yum ...
- ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01653: 表 SYS.AUD$ 无法通过 8192 (在表空间 SYSTEM 中) 扩展
https://blog.csdn.net/zhangyong329/article/details/53421951
- 洛谷—— P1122 最大子树和
https://www.luogu.org/problem/show?pid=1122 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课 ...
- Memcached的Web管理工具MemAdmin(待实践)
Memcached的Web管理工具有很多,但是最好用的应该是MemAdmin.基于PHP5开发,所以部署时要注意环境. 介绍:http://www.junopen.com/memadmin/ 下载:h ...
- CHAPTER 1 Architectural Overview of Oracle Database 11g
Which SGA structures are required, and which are optional? The database buffer cache, log buffer, an ...