//use reflect to set the private field of JRBaseReport
java.lang.reflect.Field margin =
JRBaseReport.class.getDeclaredField("leftMargin");
margin.setAccessible(true);
margin.setInt(jasperReport,0);
margin =
JRBaseReport.class.getDeclaredField("topMargin");
margin.setAccessible(true);
margin.setInt(jasperReport,0);
margin =
JRBaseReport.class.getDeclaredField("bottomMargin");
margin.setAccessible(true);
margin.setInt(jasperReport, 0);
如何去掉Excel 中隐藏的行
如前说述, 由于page break 的关系, Excel 中每隔几十行,就有一个高度为0 的row, 即使把page botom margin设为0, 把page footer去掉都没有办法. 唯一的解决办法是把page height 设为很大. 同上面一样, 不得不使用reflect:
java.lang.reflect.Field pageHeight=
JRBaseReport.class.getDeclaredField("pageHeight");
pageHeight.setAccessible(true);
pageHeight.setInt(myRpt, Integer.MAX_VALUE);
八、HTML的Bar3D图表输出心得
图表在ireport中是利用其他开源包生成的图片插入而生成,本人使用的版本是使用jfreechart1.0.0开源包实现。Ireport对jfreechart的支持不算完美,只是实现了部分的图表生成,但对于一般项目,也是足够用的。
看过jasperreport的源代码,发现,图表在HTML格式输出的时候,首先是输出一张图片,或者放在具体目录下,或者放在临时的response里,然后进行调用、输出展示。(如果选用后者的输出方式,需要注意:1.x版本后的输出需要对web.xml进行配置,配置一个servlet进行输出。)这样就造成了一个问题,就是当多用户同时访问页面的时候,用户看到的数据是正确的,但是图片却可能是别人产生的图片!
这可能是由于HTML浏览器对图片的引用时机不对,解决的方案是这样的:由于HTML格式的输出是字符形式的(PDF是二进制流形式的),所以我们选择首先把整个图表输出到字符缓冲区中,然后进行一次性输出,这样,我们辅助浏览器完成对图片引用时机的修正。当然,也可以这样做:通过修改源代码,把图片输出到不同的临时目录,这样的话,想引用错基本都不可能了J
在HTML输出的时候,一定要记得设置编码格式,通过exporter的CHARACTER_ENCODING属性来设置。而且,在HTML中输出的时候,可以不对报表进行分页操作,即取消分页。
还有,jfreechart默认输出的图片是进行抗锯齿处理过的。对于图形来说,这样会让图像显示的更圆润,而对于文字来说,可能就会显示变得模糊。解决方案:修改源代码。可以修改jasperreport的源代码,也可以修改jfreechart的源代码,只需按照如下代码进行改进即可:
jfreechart.getRenderingHints().put(RenderingHints._ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
上面的代码将图片输出的文本抗锯齿关闭,而图像依然有抗锯齿处理,所以图片相对好看。不过,有一点需要注意:字体尽量是宋体,字号最好在12到14之间,这样能达到最好的显示效果。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-30469-7.html
_)
虽然我们现在应该在军事上做好最坏的打算
中国须严阵以待