`
tendy
  • 浏览: 47127 次
  • 来自: ...
社区版块
存档分类
最新评论

jxls的bug

    博客分类:
  • java
阅读更多

jxls 主页:http://jxls.sourceforge.net/index.html

最近需要用到 jxls (版本0.9.3),使用模板生成 excel 文件,模板内容如下:

xml 代码
  1. <jx:forEach items="${students}" var="s">               
  2. <jx:if test="${s.sex == 'F'}">             
  3. ${s.name}   ${s.age}    女   ${s.birthday}   
  4. </jx:if>               
  5. <jx:if test="${s.sex == 'M'}">             
  6. ${s.name}   ${s.age}    男   ${s.birthday}   
  7. </jx:if>               
  8. </jx:forEach>              

当数据量很少的时候,例如 20 条数据,效率上是没问题的

但如果有 100 条数据,效率就非常低了,

100 条数据用了 3 秒左右,实在无法忍受

电脑配置:CPU  P4 3.0G , 内存 1G。

而且,excel 文件的行数不是 100 行,而是 600 行,其中后 500 行是空白行

如果数据有 2000 行,那么空白行数是 10000 行......

经多次测试,发现在 jx:forEach 循环中

使用 jx:if ,jx:outline 之类的 tag,会出现空白行

如果这些 tag 占用的行数是 rows,

那么空白行的数目大概是:rows * 循环次数 + false 条件产生的行数

 

那么,把 jx:if 标记去掉呢?

10000 条数据用了 8.4 秒左右,5000条数据大概是 4.6 秒,还可接受,而且没空白行。

 

看来 jxls 的 if tag 效率非常低

要生成大数据量的 excel 文件,还是不用这个 tag 了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics