大数据插入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... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 ...
随机推荐
- springboot项目--传入参数校验-----SpringBoot开发详解(五)--Controller接收参数以及参数校验----https://blog.csdn.net/qq_31001665/article/details/71075743
https://blog.csdn.net/qq_31001665/article/details/71075743 springboot项目--传入参数校验-----SpringBoot开发详解(五 ...
- SpringBoot 拦截器--只允许进入登录注册页面,没登录不允许查看其它页面
SpringBoot注册登录(一):User表的设计点击打开链接 SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接 SpringBoot注册登录(三):注册--验证 ...
- 【POJ3159】Candies(差分约束系统)
题意:有一些人, 给n个人派糖果,给出m组约束,每组约束包含A,B,c 三个数, 意思是A的糖果数比B少的个数不多于c,即B的糖果数 - A的糖果数<= c . 最后求n 比 1 最多多多少糖果 ...
- JavaMelody开源系统性能监控
https://blog.csdn.net/itopme/article/details/8618067
- react-浏览后的想法
- ci 传参
ci框架 方法上传参 public function index($cataid,$payeid,$per){ echo $cataid; echo $payeid; echo $per; } 直接就 ...
- vim 安装插件的网站
我在想, 怎么让vim可以 显示目录结构呢?一个目录里面的文件? vim插件的网站:http://www.vim.org/scripts/script.php?script_id=1658 原文:ht ...
- Java深入浅出系列(四)——深入剖析动态代理--从静态代理到动态代理的演化
静态代理 如上图,在程序执行之前.程序猿就要编写Proxy.然后进行编译,即在程序执行之前,代理类的字节码文件就已经生成了(Proxy类的class文件已经存在了). 静态代理尽管在增强现有的接口业务 ...
- C#之插入排序
算法描述 1.假定数组第一位为有序序列,抽出后一位元素与有序序列中元素依次比较: 2.如果有序序列元素大于抽出元素,将该元素向后移位: 3.重复前面步骤依次抽取无序序列中首位元素进行比较,直到所有数值 ...
- Intellij IDEA报错:Could not save application settings: java.io.IOException: java.lang.AssertionError: Unexpected content storage modificat
Question: i have a message saying "Could not save application settings: java.io.IOException: ja ...