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

Jaspersoft点滴记录

JasperServer

?

Tomcat的Cannot serialize session attribute XXX? for问题
Context.xml中增加<Manager className="org.apache.catalina.session.PersistentManager"?saveOnRestart="false"/>用来停止保存Session资源

?

JasperServer的汉化

复制jasperserver\WEB-INF\bundles\jasperserver_messages.properties为jasperserver_messages_zh.properties修改里面的属性为中文后,用jdk工具native2ascii.exe进行转码

中文问题

导出pdf的时候需要将iTextAisan.jar放在lib文件夹中,然后指定PDF导出的字体

Pdf Font Name :?STSong-Light

Pdf Encoding :?UniGB-UCS2-H (Chinese Simplified)

?

导出Excel没有表头

修改WEB-INF/classes/jasperreports.properties文件,增加下面内容:

# keep the first column header on export

net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.1=pageHeader

net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.2=columnHeader

?

修改导出列表

由于导出CSV文件乱码,想将其从列表中移除,修改WEB-INF/flows/viewReportBeans.xml

编辑exporterConfigMap配置,将CSV配置注释掉就OK。

?

日期格式化(修改日期格式为yyyy-MM-dd格式)

1.修改jasperserver\WEB-INF\bundles\jasperserver_config.properties,这样InputControl中的日期控件的格式会做相应的更改。

2.修改jasperserver\WEB-INF\applicationContext.xml文件对configurationBean定义的日期格式,这样显示查询结果会做相应的更改

?

Title的更改

文件位置:jasperserver\WEB-INF\decorators\decorator.jsp,修改页面的Title标签即可

?

iReport


小数点设置

使用iReport的时候通常要定义变量, 并且经过一系列的计算得到最终的值。但我们需要最终的值只保留两位小数,因此需要对其进行设置。比较简单的是让它返回BigDecimal对象,在Variable Expression中这样设置:(new BigDecimal(计算公式)).setScale(2,BigDecimal.ROUND_HALF_UP)

?

SubReport

添加Subreport时如果需要依赖输入参数,那么需要在Mainreport中的Subreport属性面板中设置。上传到Jasperserver中主报表访问子报表需要用repo路径,如:

<subreportExpression class="java.lang.String"><![CDATA["repo:subreport"]]></subreportExpression>如果有问题可继续尝试在subreport前增加/

?

Web端导出Excel

在Web端展示的时候,使用的是struts2-jasperreports-plugin这样的一个插件。然而在Chrome中导出Excel的时候遇到了问题:文件的后缀不是.xls而是.action,这是由于没有对Response设置Header信息的缘故。所以需要在struts2的xml文件中指定这个插件的documentName属性。这样插件会对Response设置Header和documentName指定的文件名,文件名的后缀它会读取format指定的格式,这里是XLS。

Struts2的result信息配置如下:

?

<result name="exportOrdersXLS" type="jasper">
        <param name="location">/jaspers/orders.jasper</param>
        <param name="connection">connection</param>
        <param name="reportParameters">reportParameters</param>
        <param name="exportParameters">exportParameters</param>
        <param name="format">XLS</param>
        <param name="documentName">Orders</param>
        <param name="imageServletUrl"><![CDATA[/image?image=]]></param>
</result>
?

iReport中获取JasperServer登录的用户和权限

?

In a report define the follwing parameters:
 
<!-- this is passed in automatically by JasperServer -->
  <parameter name="LoggedInUser" class="com.jaspersoft.jasperserver.api.metadata.user.domain.User"/>
<!-- these are dependent parameters -->
  <parameter name="LoggedInUserRoles" class="java.util.Collection">
    <defaultValueExpression><![CDATA[$P{LoggedInUser}.getRoles()]]></defaultValueExpression>
  </parameter>
  <parameter name="LoggedInUserRolesAsStrings" class="java.util.Collection">
    <defaultValueExpression><![CDATA[convert $P{LoggedInUserRoles} to collection of strings - Gtroovy or Java Expression, or scriptlet method call]]></defaultValueExpression>
  </paramet