转载:https://blog.csdn.net/shiyun123zw/article/details/79180187
接着上一篇的内容来看报表分组显示数据
6.1 设计报表模板(在DemoReport4.jrxml上修改)
6.1.1 模板右键 -> Create Group ,跳出Group Band的页面,命名并选中分组方式
点击Next ,只勾选 Group Header。
然后Finish。完成后模板中多出 Group2 Group Header1 的Band
6.1.2 将deptId 拖入 Group Header中 ,会跳出 TextField Wizard框,选中 NoCalculation Function 。
双击 $F{deptId} 会弹出Expression editor框
设计报表模板如下:
保存后,替换项目中的jrxml文件。
6.2 编写servlet注入数据源(在JasperServlet3上修改)
此处代码略;往下看;
tomcat,并访问。
代码如下:
JasperServletJavaBeanGroup.java
package com.accord.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import com.accord.demo.User;
public class JasperServletJavaBeanGroup extends HttpServlet {
private static final long serialVersionUID = 1L;
public JasperServletJavaBeanGroup() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletConfig().getServletContext();
try {
//JasperCompileManager.compileReportToFile("E:/report/DbReport.jrxml");
JasperCompileManager.compileReportToFile(context.getRealPath("/jasper/DemoReport04.jrxml"));
} catch (JRException e1) {
e1.printStackTrace();
}//编译jrxml文件,生成jasper文件
File reportFile = new File(context.getRealPath("/jasper/DemoReport04.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("FileWebappReport.jasper "
+ "not found. The report design must be compiledfirst.");
String jasperPath = context.getRealPath("/jasper/DemoReport04.jasper");
FileInputStream isRef = null;
ServletOutputStream sosRef = null;
try {
isRef = new FileInputStream(reportFile);
sosRef = response.getOutputStream();
//组装list数据源
List<User> list = new ArrayList<User>();
User user = new User("小明1");
User user2 = new User("小明1");
User user3 = new User("小明4");
User user4 = new User("小明4");
User user5 = new User("小明3");
User user6 = new User("小明3");
list.add(user);
list.add(user2);
list.add(user3);
list.add(user4);
list.add(user5);
list.add(user6);
//javabean为数据源注入报表数据
JasperRunManager.runReportToPdfStream(isRef, sosRef, null,new JRBeanCollectionDataSource(list));
response.setContentType("application/pdf");
} catch (Exception e) {
e.printStackTrace();
}finally {
sosRef.flush();
sosRef.close();
}
}
}
DemoReport05.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="DemoReport04" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a4cc8842-e711-43ea-bab5-c3fb8a0707c1">
<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="msql"/>
<queryString language="SQL">
<![CDATA[select * from company]]>
</queryString>
<field name="name" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="name"/>
<property name="com.jaspersoft.studio.field.tree.path" value="company"/>
</field>
<group name="Group1">
<groupExpression><![CDATA[$F{name}]]></groupExpression>
<groupHeader>
<band height="58">
<textField>
<reportElement x="70" y="28" width="440" height="30" uuid="babff0c9-9945-490e-9782-9363bec64b87"/>
<textElement>
<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
</textElement>
<textFieldExpression><![CDATA["以部门ID分组:部门:" + $F{name}]]></textFieldExpression>
</textField>
</band>
</groupHeader>
</group>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="54" splitType="Stretch">
<staticText>
<reportElement x="216" y="12" width="122" height="30" uuid="2af80fa7-f0d5-4b35-a084-bf1818a9296e"/>
<textElement>
<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
</textElement>
<text><![CDATA[名称明细表]]></text>
</staticText>
</band>
</title>
<detail>
<band height="84" splitType="Stretch">
<textField>
<reportElement x="240" y="64" width="100" height="20" uuid="d8be8542-ab13-4c4e-bdca-ad95a363ddc5"/>
<textElement>
<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="54" splitType="Stretch">
<textField>
<reportElement x="441" y="23" width="100" height="30" uuid="5eeb73dc-d3e6-452d-87b9-6ee4fb03021c"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>