在web系统中,从数据库取数据,然后生成excel肯定很慢,很消耗资源。如何解决?
解决方案 »
- 关于io流的一个问题
- Java1.5以上的范型,到底是编译时的还是运行时的?
- equals()和hashCode()
- 如何退出去啊?
- 如何判断一个线程组中的所有线程都运行完毕?
- thinking in java书上的一个例子,不知道怎么运行。帮我
- jdk\demo\applets目录中的applet程序怎么用appletviewer不能执行?
- JPanel中画图的问题,高手来帮忙
- java.lang.UnsatisfiedLinkError: no nlsxbe in java.library.path?
- 能不能把java文件编译成可执行文件,但不需要java虚拟机?
- 关于jdk1.4升级到1.6问题
- 着急,不知道怎么解决了,比较有挑战性,谢谢大家。解决即放分,
2 如果那个Excel是固定的,比如月报表,你可以把生成好的保存在磁盘上,下次直接使用就行了!
2 不是固定的.根据输入条件,查询数据,然后生成excel
2 是不是数据量特别大,从数据库取数据特别慢? 考虑优化算法或者建立中间零时表;
3 将取道的大量数据写入1中生成的EXCEL,不知道速度慢不慢? 我没实验过, 请大家讨论
再将数据与模板进行合并后,把后缀改为xls就可以用Excel打开了。这样省得用专门
生成Excel文档的工具了。模板(比如用:Velocity或FreeMarker)合并数据是很快
的。这样合并出来的文件是比较小的,因为就是个HTML文件,只不过后缀改为了xls。
<table>
#foreach($obj in $objs)
<tr>
<td>$obj.id</td>
<td>$obj.name</td>
<td>$obj.age</td>
<td>$obj.address</td>
</tr>
#end
</html>上面那个是个假设的Velocity模板文件,在使用时将objs压入到模板中,就会产生完整的HTML字符串,
把这个字符串写到文件里,将文件名的后缀命为“.xls”,就可以了。当然了,HTML的table格式可以使用CSS来控制。不信可以自己手工用HTML做个表格,把后缀改为.xls,再用Excel打开就可以看到结果了。不过,这种方法只适合生成报表,不适合读取。