发新话题
打印

[结贴]怎样做到清单展示部分数据,而导出全部记录

[结贴]怎样做到清单展示部分数据,而导出全部记录

比如报表清单有10W条记录,那么在页面上只展示其中的200条,但是点击导出时却导出全部10W记录。
    请问这个怎样实现为佳?
    另当导出10W条记录时,导成pdf/word是否支持?而excel最多6W多行,此时是否会自动分sheet或者能否自动分文件?

[ 本帖最后由 haifengqiu 于 2011-3-1 14:06 编辑 ]

TOP

1. 这个可能需要你自己扩展,方法是对只导出 200条记录的报表,加上 top n,就可以了
点击导出时,将 top n去掉就行了,web提交一个参数,让报表模板来判断是导出,还是显示。

2. pdf应该是没问题的, excel 的每个sheet ,只能是64k行,可以采用分页导出,reportjob类里,有一个excel多sheet导出的功能,你可以参照这个来扩展你的功能。

TOP

1.根据日志来看,显示时会去查询一次数据集,而导出时不再去查询数据集?如果这样,那么导出时应该就是直接从某缓存里取,这样没法再去数据集查询。
这个好像可以加个properties的配置或者改下源码就可以做到不缓存,但是我想问下,怎样在sqlreader中获取最新的url参数。
比如同样一个sqlreader,第一次是打印,指定一个参数param1=notall,第二次是导出,改变参数param1=all,我怎样在sqlreader里获知这个改变?
如果将这个变量放到设计器的sql语句那倒是可以,但是太不适合了。

2.分页xls我看了下,好像是按照页面设置来进行分页的,如果要指定导出时每页多少条,是否能够通过设计时指定打印样式?

[ 本帖最后由 haifengqiu 于 2011-2-23 16:54 编辑 ]

TOP

1. 你可以在 jatools.properties 里加下面的属性,就可以阻止系统自动缓存:
  no.cache.model=true
    变量放到设计器的sql语句可以,我不知道,你为什么说不合适?对于用户来说,他最希望通过设计器,来提供这种灵活性,而不是改源码,不知道,你是否认同我这个观点。

2. 这个简表,还做不到,但这个扩展应该也不难。

TOP

引用:
原帖由 admin 于 2011-2-24 12:24 发表
1. 你可以在 jatools.properties 里加下面的属性,就可以阻止系统自动缓存:
  no.cache.model=true
    变量放到设计器的sql语句可以,我不知道,你为什么说不合适?对于用户来说,他最希望通过设计器,来提供这种 ...
1。这个属性确实可行,早上已经试验过了。、
我的意思是如果在设计器指定sql语句时,加上top n的内容,然后在导出时怎么去判断当前是导出而非打印,要处理去掉该内容?我只想到在原有的sql语句首尾加一个变量$exportflag,然后在显示时该变量和导出时该变量由于Url传参不同,所以在sqlreader里能够区分当前是显示报表还是导出报表。我觉得这种处理方式很别扭,希望能知道一个在sqlreader里获取url所有参数的方法,而不仅仅只是sql语句里的变量参数。

2。能够修改jatools包下的源码么?还是继承一些类,并提供自己的servlet?

[ 本帖最后由 haifengqiu 于 2011-2-24 13:23 编辑 ]

TOP

有谁能回答下么。。。

TOP

引用:
原帖由 haifengqiu 于 2011-2-24 13:04 发表


1。这个属性确实可行,早上已经试验过了。、
我的意思是如果在设计器指定sql语句时,加上top n的内容,然后在导出时怎么去判断当前是导出而非打印,要处理去掉该内容?我只想到在原有的sql语句首尾加一个变量$e ...
如果你一定要在sqlreader的源码中做文章,也是可以的,你可以通过 sqlreader.readStart,得到web传过来的参数,

如  http://localhost/jor/reportviewer?file=a.xml&myparam=1
复制内容到剪贴板
代码:
public RowMeta readStart(Script script, boolean withdata)
        throws jatools.dataset.DatasetException {
        String p1 = script.get("myparam");  // p1 将是"1"

TOP

引用:
2。能够修改jatools包下的源码么?还是继承一些类,并提供自己的servlet?
不需要。

TOP

引用:
原帖由 admin 于 2011-3-1 10:10 发表


如果你一定要在sqlreader的源码中做文章,也是可以的,你可以通过 sqlreader.readStart,得到web传过来的参数,

如  http://localhost/jor/reportviewer?file=a.xml&myparam=1public RowMeta readStart(Scrip ...
非常感谢,结贴。

TOP

发新话题