日期:2014-05-17  浏览次数:20825 次

jasperreports打印word格式报表的问题

??????使用jar包jasperreports-1.3.2.jar、jasperreports-extensions-1.3.1.jar同样一个报表实例文件打印excel和PDF格式都能正常,唯独打印Word格式报表,出现断行和空白。

???? .Jrxml文件里设置的是分组字段为年度和保管期限,每页显示15行。JAVA代码里控制的是先将数据按照年度和保管期限分组,一组一组的打印,也就是说每一组都要重启一页打印,不足十五行的,补够空行。比如一组的数据是20条,那么它会占用2页,第一页显示1-15,第二页显示5,应该补10个空行,事实上其他的PDF、Excel也都能正常显示这个空行。但就是word出现了显示的时候,比如我打印的结果是31页,在第四页的时候属于这一组的有10条数据,本来代码里确实补上了5个空白行的,但是却不显示空白表格行,出现空白一片,如图1。我的第6页出现空白和乱七八糟的表格,如图2。一开始老觉得是报表实例文件.Jrxml里写的样式的问题,因为有报表高手说word格式的报表实例要求比较严格,需要单独设计样式,但是请了专业的报表设计专家改了好几版的样式,打印的结果还是惨不忍睹......有高手说是jasperreports本身的问题,这个肯定解决不了.....

?

????? 脑子里突然的一个念头,目光闪到了加空行的代码那里,发现该报表实例定义的列有件号、文件编号、文件题名、日期、页数、备注,分组字段是年度和保管期限。补空行的代码只是给年度和保管期限写上了它这一组的实际的值,比如属于年度=2010;保管期限=长期的一组的,补空行直接new了一个空的map,往里面set("年度","2010")和set("保管期限","长期")。我写了个set("件号",""),再次打印,居然发现之前出现的异常都没有了,而且excel和PDF都能正常打印。哈哈问题解决了,总结一下,将除分组字段以外的其他字段也都写上值为空字符串,解析的时候就不会出错了,不会有空白和断行、断页了。但是请记住给分组字段set的值不能为空的,要不你这空行属于哪一组的,要往哪里加,jasperreports可是不知道啊。