|
50精币
易语言程序从数据库中读取80w行数据,通过COM写入EXCEL文件多个sheet中,共40列,写入方法是range.写属性(“value2”,区域变体型数组),公式区域用formula属性写入,range行列为2000*40,多次调试情况如下:
1.当最后的sheet数据行数超过30w行后,range.写属性()批量赋值经常失败,不久就出现附件所示错误;
2.range批量赋值失败后,还是通过range.写属性()方法,重新逐行、逐单元格赋值,则未见赋值失败,但不久还是出现附件所示错误;(可见,区域赋值的数据类型没有问题)
3.跳过之前sheet,直接用range.写属性()方法写这个30w+行的sheet,未见批量赋值失败,也未出现附近所示错误。
4.附件所示报错后,易语言程序很快崩溃,但COM所在EXCEL进程仍驻留运行进程中,内存占用最大未超过700M。
5.查询官方EXCEL限制与规范,单个sheet行列限制为1048576 * 16384 列,公式数量无限制,工作表个数受内存限制。
由此推测,易语言操作的COM对象,是不是有体积限制?超限易语言程序则会崩溃?恳请各位大神指教
补充内容 (2024-8-28 21:13):
当把每页列数减少到25列,总行数还是80w,,单页最大还是30w+,则不会批量赋值失败,也不会出现附件所示错误
补充内容 (2024-8-29 08:04):
关于附件所示错误,网上及论坛里论搜过,据说原因多种多样,包括重装c++运行库,清理临时文件,重装系统,全局变量锁机制…,总之,具体原因...
补充内容 (2024-9-4 10:57):
完美构造xlsx文件,单线程写出800条/秒,速度不错,如想提速可以每个sheet一个线程同时写出 |
最佳答案
查看完整内容
或者自己组装格式,我看到了一个源码,直接自己组,xlsx 其实就是个xml 加压缩
|