大数据插入Excel报错处理
2018-06-17 19:28:58来源:未知 阅读 ()
发现问题:
最近运行程序时,发现了一个问题,就是在导出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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FireDAC 下的 Sqlite [3] - 获取数据库的基本信息【转载自万 2020-05-26
- Delphi中DBGrid 表中双击直接修改数据(02) 2020-03-28
- JSON文本文件导入到Sqlite3数据库 2020-03-02
- TChart-数据编辑(TChartListBox,TeeCommander) 2020-02-21
- Intraweb IIS发布,数据连接问题 2019-12-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash