一、環境搭建
在spring-mvc.xml加入
<!-- jasperReports-->
<import resource="classpath*:spring-mvc-jasperreports.xml"/>
spring-mvc-jasperreports.xml具體配置代碼:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
<!-- jasperReports報表集成視圖解析器 -->
<bean id="jasperReportsViewResolver"
class="org.springframework.web.servlet.view.jasperreports.JasperReportsViewResolver">
<!-- 執行優先級,值越小優先級越高 -->
<property name="order" value="0"/>
<!-- 處理視圖返回 -->
<property name="viewClass" value="com.silverdata.smart.report.jasperreports.JasperReportsView"/>
<property name="prefix" value="/WEB-INF/jasper/"/>
<property name="suffix" value=".jasper"/>
<!-- 可通過配置此項用來過濾是否執行此視圖解析器 -->
<!-- <property name="viewNames" value="rpt*"/> -->
<!-- 報表數據源 -->
<property name="jdbcDataSource" ref="dataSource"/>
<!-- 擴展參數 -->
<property name="exporterParameters">
<map>
<!-- 指定格式報表的內容編碼 -->
<entry key="net.sf.jasperreports.engine.JRExporterParameter.CHARACTER_ENCODING">
<value>UTF-8</value>
</entry>
<!-- 通過Web訪問時圖片的URI -->
<!-- <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_URI">
<value type="java.lang.String">/jasper/image.jsp?image=</value>
</entry> -->
<!-- 圖片目錄的絕對路徑 -->
<!-- <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_DIR_NAME">
<value type="java.lang.String">D:\\work\\***\\framework\\tmp</value>
</entry> -->
<!-- 是否輸出圖片到目錄 -->
<!-- <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR">
<value type="java.lang.String">true</value>
</entry> -->
</map>
</property>
</bean>
</beans>
jar包需要:
<!-- jasperreports -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
</dependency>
二、jasperreports報表設計步驟
1.新建項目配置jar包


若jar包unbond未找到~檢查是否目錄路徑是純英文的~中文不識別
2.新建報表模版~一般中國的報表直接用空白A4去做

3.若要用測試數據展現表格配置


然后根據需要查詢字段表~加入測試數據一般也不使用
4.頁面設計

5.配置

樣式

編譯

java代碼部分:
開發代碼:
public ModelAndView apply(ModelAndView modelAndView,@PathVariable("id") Long id) {
注釋部分為二維碼生成
/*List<Order> list = Lists.newArrayList();
Order order;
for (int i = 0; i < 100; i++) {
order = new Order(i, "供應商" + i, "廈門市" + i + "號樓", i % 2 == 0 ? "廈門" : "周口", new Timestamp(System.currentTimeMillis()));
list.add(order);
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
QRCodeUtils.encode("PE12873619284611231213", 100, 100, byteArrayOutputStream);
InputStream file = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
Map<String, Object> m = new HashMap<String, Object>();
m.put("QRCodeString", "PE12873619284611231213");
m.put("QRCode", file);
m.put("image", "E:\\ideaWorkSpace\\pipegallery\\pipegallery-operation\\src\\main\\webapp\\WEB-INF\\jasper\\silhouette.jpg");
return ReportUtils.toPdf("Silhouette4", m, list);*/
List<ApplyDetails> applyDetailsList = Lists.newArrayList();
Map<String, Object> m = new HashMap<String, Object>();
List<Map> list =materialsIeApplyDetailsService.getAllByDynamicWhere(id);
MaterialsIeApply materialsIeApply=materialsIeApplyService.get(id);
m.put("APPLICANT",materialsIeApply.getApplicant());//申請人
m.put("ORDERNO",materialsIeApply.getOrderno());
m.put("IEAPPLYTYPE","0".equals(materialsIeApply.getIeApplyType())?"租用":"使用");
m.put("PLANGETDATE",materialsIeApply.getPlanGetDate());//領用時間
m.put("PLANRETURNDATE",materialsIeApply.getPlanReturnDate());//歸還時間
m.put("AUDIT",materialsIeApply.getAuditId());//審核人
m.put("AUDITDATE",materialsIeApply.getApplyDate());//審核時間
//(0未提交、1待審核、2已審核、3未通過、4打回、5部分出庫、6全部出庫、7作廢)
m.put("APPROVALSTATE", ReturnMaterialsIeApplyString.returnString(materialsIeApply.getApprovalState()));//申請單狀態
m.put("APPLYDATE",materialsIeApply.getApplyDate());//申請提交時間
m.put("REASON",materialsIeApply.getReason());
m.put("REMARK",materialsIeApply.getRemark());
m.put("AUDITOPINION",materialsIeApply.getAuditOpinion());//審核意見
ApplyDetails applyDetails;
for (Map map:list){
applyDetails=new ApplyDetails(map.get("materialsname").toString(),map.get("suppliername").toString(),Integer.parseInt(map.get("amount").toString()),map.get("remark").toString(),map.get("spec").toString(),"1");
applyDetailsList.add(applyDetails);
}
return ReportUtils.toPdf("MaterialsIeApply", m, applyDetailsList);
}
