Jasperreports+jaspersoft studio学习教程(五)- 分组显示数据

 转载: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>

猜你喜欢

转载自blog.csdn.net/u013456370/article/details/81475645