1.在pom.xml中导入jar包
<!-- ireport -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.2.2</version>
</dependency>
2.在spring-mvc中添加
<!-- 注册XmlViewResolver,用于iReport & JasperReports报表生成 -->
<bean id="jasperReportResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order">
<value>0</value>
</property>
<property name="location">
<value>classpath:jasper-views.xml</value>
</property>
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="reportView" class="com.jinzay.smef.platform.reportView.CustomReportView">
<property name="reportDataKey" value="jrMainDataSource"/>
</bean>
</beans>
package com.jinzay.smef.platform.reportView;
import java.util.Map;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView;
/**
* <p>Title: 报表工具</p>
*
*/
public class CustomReportView extends JasperReportsMultiFormatView{
private JasperReport report;
public CustomReportView() {
super();
}
protected JasperPrint fillReport(Map<String, Object> model) throws Exception {
if (model.containsKey("url")) {
setUrl(String.valueOf(model.get("url")));
this.report = loadReport();
}
return super.fillReport(model);
}
protected JasperReport getReport() {
return this.report;
}
}
@RequestMapping(value = "/report", method = RequestMethod.GET)
public String report(Model model) {
List<Map<String, ?>> hissList = new ArrayList<Map<String,?>>();
Map<String, String> temp = new HashMap<String, String>();
hissList.add(temp);//拼装数据(map的键是$F{....}的名字,value值就是显示的值)
// 报表数据源 (可以往界面添加多个数据源)名字可以随便定义
JRMapCollectionDataSource jrDataSource = new JRMapCollectionDataSource(sList);
JRMapCollectionDataSource hisDataSource = new JRMapCollectionDataSource(hissList);
// 动态指定报表模板url
model.addAttribute("url", "/WEB-INF/classes/jasper/chedai.jasper"); //填充的jasper的文件地址
model.addAttribute("format", "pdf"); // 报表格式
model.addAttribute("jrMainDataSource", jrDataSource); //主数据源
model.addAttribute("hisDataSource", hisDataSource); //子表数据源
return "reportView"; // 对应jasper-views.xml中的bean id
}
可以导入额外的jar包iTextAsian-1.0.jar
详细设计请看
Jaspersoft iReport Designer 5.6.0 的使用
8.linux上中文问题
创建jasperreports.properties文件放入classes里
net.sf.jasperreports.awt.ignore.missing.font=true
在windows里查找需要的字体,放入classes里
链接可以看这里
http://note.youdao.com/noteshare?id=70c2583ebb03578d91300b17d9694845