维护一个老系统,.net写的,功能是查询并导出为excel。
用户发现数据超过10000行的时候,系统报错。
经过分析,应该是viewstate大小超限了,查询结果首先是用datagrid展示的,而且其viewstate是enabled。iis6以后,可以调整web服务器能接受的post数据的最大值,但ii5不行。tomcat也有类似的参数。
没办法,只好禁用datagrid的viewstate。而是把查询结果保存在session了,或者导出的时候,再查询一次。
接下来还有一个问题,导出1万条数据到excel时,效率极低,需要好几分钟。
google了一下,发现这是excel interop方式下的一个问题。解决办法是有的。
原来用worksheet.cells[x,y]这样的方式填充数据太低效。得用worksheet.get_range("A1","A1").get_resize(100,100).value=aArray;这样的方式,把一个二维数组直接赋值,瞬间完成。
?
把这个小事记下来,给用得着的朋友做参考。