例如GraphProvider.getImage($P{REPORT_DATASOURCE},title,
subtitle.....);GraphProvider是自己的类, public static ImagegetImage(JRDataSource,
....)
如果显示多个图表
在一张报表上显示一个图表和显示多个图表是不同的. 假设Query 是selectname,price,qty
from xxx, 第一张图显示name-price, 第二张图显示name-qty, 如果还是按上面的方法,第二张图根本显示不出来! 为什么
因为传入的是JRDataSource, 而JRDataSource仅仅是对ResultSet的简单封装, 在第一张图处理完后,游标已经到了eof 位置了,
在开始处理第二张图的时候,就必然抛出游标耗尽的异常!
怎么办?自己写个JRDataSourceAdapter,把JRDataSource对象里面的值预先保存到一个Collection
(相当于一个Offline的数据集), 然后把这个Collection传个getImage方法. 具体是, 建一个Variablemydate,
类型是java.util.Map, Calculation Type- System,Initial ValueExpression
是JRDataSourceAdapter.JRDataSource2Map($P{REPORT_DATA_SOURCE},new
String[]{'NAME','PRICE','QTY'},
new
Class[]{java.lang.String.class,java.lang.Double.class,java.lang.Double.class});
JRDataSource2Map 是自己写的一个Adapter. 然后在Image 的Expression
里面换成如GraphProvider.getImage(mydata,title, other params...),当然得修改getImage方法
Export到Excel的问题
如何去掉报表头
直接把不需要的Band 删除(把其高度设为0). 如果仅仅是export 到Excel
的时候不需要报表头, 而输出到PDF 等仍然需要保留, 那么使用print when expression, 见前面
如何让Excel 看起来整齐
不要有空白地方,首先把所有的Field 设成一样高, 对齐! 把所在Band 的高度也设成和Field 一样高, 让Field正好放入Band.
然后调整Field 的宽度, 让每个Field 都相邻,没有空隙.(如果设置正确,所有的Field边框在鼠标点中的时候显示蓝色,否则是绿色)
最后,记得设置参数:
exporter.setParameter(JRXlsExporterParameter.
IS_REMOVE_EMPTY_SPACE_BETWEEN _ROWS , Boolean.TRUE);
如何保留GridLine
首先,
设置参数exporter.setParameter (JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND ,
Boolean.FALSE);然后,把每个Field 或者Static Text框的''Transparent''属性都勾上
如何使字段名只显示一次
如果把字段名放在ColumnHead 区域, 那么输出到Excel, 会每个Page 都显示一遍. 在设计Report 时候,一般会设定Page
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-26308-6.html
面子上都过得去
让它们去赚大钱吧
马云也是拼了啊
而且出现的概率这么低傻傻