Jasperreports+jaspersoft studio学习教程(六)- Table组件的使用

7.1 设计报表模板

7.1.1 新建模板DemoReport5.jrxml,去掉不需要的Band,保留Title,Page Header,Detail 1 , PageFooter。将组件Table拖入到Detail1 中,跳出Dataset窗口。选择 Create .. ,然后Next

7.1.2 给Dataset命名。选择 Createnew dateset ... ,然后Next

7.1.3 只保留Column Header,然后 Finish

7.1.4 点击Detail中的Table组件进入到Table界面中。

7.1.5 在Column Header中右键Column1 选择Create Column After,生成4个Column

7.1.6 一般表头都是 合并列的复杂表头。选择Column1 右键 -》 Group Columns

在Columns[1]中的Column1右键Create Column after ,显示如下:

将其他三个也如此操作

7.1.7 将组件Text Field 拖入表格中,并设置表头名

7.1.8 在dateset1中新建Field属性,并拖入到Table的Detail中,设置字体样式(这里自定义命名Filed,且注意类型)

7.1.9 返回到Main Report ,新建Fields 命名为table Data,设置Class为JRBeanCollectionDataSource,注意写全路径,新建一个Field为Date,Class为String

7.1.10 点击Main Report 的Detail中的Table,显示Properties后,点击DataSet,选中Use a JRDatasource expression,将新建tableData写入。

保存模板,并复制到JasperWeb项目中。

7.2 编写Servlet注入数据源

7.2.1 新建Fields类和ModelTableSource类如下:


package com.jasper.bean;
 
public class Fields {
	
	private String field1;
	private String field2;
	private String field3;
	private String field4;
	private String field5;
	private String field6;
	private String field7;
	private String field8;
 
//get 和 set方法省略
 
}
package com.jasper.bean;
 
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
 
public class ModelTableSource {
	/**
	 * 注入table组件的数据源
	 */
	private JRBeanCollectionDataSource tableData;
	/**
	 * 当前时间(查询时间)
	 */
	private String date;
// get和set方法省略
 

7.2.2 新建JasperServlet5 ,doGet内容如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Map<String,Object> parameters = new HashMap<String,Object>(16);
		
		String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport5.jrxml";
		//由jrxml文件编译后生产jasper文件的路径
		String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport5.jasper";
		
		FileInputStream isRef = null;
		ServletOutputStream sosRef = null;
		
		try {
			//编译jrxml生产jasper文件
			JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
			
			isRef = new FileInputStream(new File(jasperPath));
			sosRef = response.getOutputStream();
			//组装list数据源
			List<Fields> list = new ArrayList<Fields>();
			for(int i = 1 ; i <= 20; i++) {
				Fields fields = new Fields("field"+i,"field"+(i+1),"field"+(i+2),"field"+(i+3),"field"+(i+4),"field"+(i+5),"field"+(i+6),"field"+(i+7));
				list.add(fields);
			}
			ModelTableSource mts = new ModelTableSource();
			mts.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
			mts.setTableData(new JRBeanCollectionDataSource(list));
			List<ModelTableSource> mlist = new ArrayList<ModelTableSource>();
			mlist.add(mts);
			//new JRBeanCollectionDataSource(list)  以javaBean为数据源注入报表数据
			JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(mlist));
			response.setContentType("application/pdf");
		} catch (JRException e) {
			
			e.printStackTrace();
		}finally {
			sosRef.flush();
			sosRef.close();
		}
	}

DemoReport5.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1  -->
<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="DemoReport5" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="0" bottomMargin="0" uuid="4adfbdd9-38e2-4463-8984-aa44e476d0ef">
	<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
	<property name="com.jaspersoft.studio.unit." value="pixel"/>
	<property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
	<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
		<box>
			<pen lineWidth="0.5" lineColor="#000000"/>
			<topPen lineWidth="0.5" lineColor="#000000"/>
			<leftPen lineWidth="0.5" lineColor="#000000"/>
			<bottomPen lineWidth="0.5" lineColor="#000000"/>
			<rightPen lineWidth="0.5" lineColor="#000000"/>
		</box>
	</style>
	<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
		<box>
			<pen lineWidth="0.5" lineColor="#000000"/>
			<topPen lineWidth="0.5" lineColor="#000000"/>
			<leftPen lineWidth="0.5" lineColor="#000000"/>
			<bottomPen lineWidth="0.5" lineColor="#000000"/>
			<rightPen lineWidth="0.5" lineColor="#000000"/>
		</box>
	</style>
	<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
		<box>
			<pen lineWidth="0.5" lineColor="#000000"/>
			<topPen lineWidth="0.5" lineColor="#000000"/>
			<leftPen lineWidth="0.5" lineColor="#000000"/>
			<bottomPen lineWidth="0.5" lineColor="#000000"/>
			<rightPen lineWidth="0.5" lineColor="#000000"/>
		</box>
	</style>
	<subDataset name="Dataset1" uuid="d7283d3b-65a7-4fa1-a2d2-6da13c4d48d0">
		<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
		<queryString>
			<![CDATA[]]>
		</queryString>
		<field name="field1" class="java.lang.String"/>
		<field name="field2" class="java.lang.String"/>
		<field name="field3" class="java.lang.String"/>
		<field name="field4" class="java.lang.String"/>
		<field name="field5" class="java.lang.String"/>
		<field name="field6" class="java.lang.String"/>
		<field name="field7" class="java.lang.String"/>
		<field name="field8" class="java.lang.String"/>
	</subDataset>
	<queryString>
		<![CDATA[]]>
	</queryString>
	<field name="tableData" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
	<field name="date" class="java.lang.String"/>
	<title>
		<band height="60" splitType="Stretch">
			<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
			<textField>
				<reportElement x="0" y="20" width="800" height="40" uuid="7b0da6e9-3fb8-4ba8-9bec-c1eacb8d96df">
					<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="微软雅黑" size="22" isBold="false"/>
				</textElement>
				<textFieldExpression><![CDATA["表头"]]></textFieldExpression>
			</textField>
		</band>
	</title>
	<pageHeader>
		<band height="44" splitType="Stretch">
			<textField>
				<reportElement x="640" y="10" width="160" height="30" uuid="b90495ff-855f-46d3-ad40-2b7e950c2633">
					<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
				</reportElement>
				<textElement textAlignment="Right" verticalAlignment="Middle">
					<font fontName="微软雅黑"/>
				</textElement>
				<textFieldExpression><![CDATA["日期:"+$F{date}]]></textFieldExpression>
			</textField>
		</band>
	</pageHeader>
	<detail>
		<band height="80" splitType="Stretch">
			<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
			<componentElement>
				<reportElement x="0" y="0" width="800" height="80" uuid="b94f1ddb-4546-4768-be49-230b349eebf8">
					<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
					<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
					<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
					<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
					<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
					<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
				</reportElement>
				<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
					<datasetRun subDataset="Dataset1" uuid="51504763-a536-4565-9ff8-70c855f39903">
						<dataSourceExpression><![CDATA[$F{tableData}]]></dataSourceExpression>
					</datasetRun>
					<jr:columnGroup width="200" uuid="8a8e7f60-374e-4627-9bc1-297fae54108c">
						<property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [2]"/>
						<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
						<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
							<property name="com.jaspersoft.studio.unit.width" value="px"/>
							<textField>
								<reportElement x="0" y="0" width="200" height="30" uuid="c695a0eb-6bea-4394-9888-a61cbf24f7ab"/>
								<textElement textAlignment="Center" verticalAlignment="Middle">
									<font fontName="微软雅黑" size="18"/>
								</textElement>
								<textFieldExpression><![CDATA["列1"]]></textFieldExpression>
							</textField>
						</jr:columnHeader>
						<jr:column width="100" uuid="5bc71fed-57d8-4810-a50a-54c8ee6dd7b1">
							<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="35810eeb-898d-4d58-bc29-e7a668a3b4b9"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列1.1"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<property name="com.jaspersoft.studio.unit.height" value="px"/>
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="424e8514-cb83-4485-b140-6cc6eabd7e94"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field1}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
						<jr:column width="100" uuid="6878fa77-59d7-47db-a535-9284b239bf53">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="7b661cef-c3d2-421a-bd76-ac00e1888870"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列1.2"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="a9650587-d059-4da3-bae9-619adb6076ce"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field2}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
					</jr:columnGroup>
					<jr:columnGroup width="200" uuid="34668ad5-8cb1-4aff-9477-7c9543716a18">
						<property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [2]"/>
						<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
						<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
							<property name="com.jaspersoft.studio.unit.width" value="px"/>
							<textField>
								<reportElement x="0" y="0" width="200" height="30" uuid="f8861e48-1987-4b73-813f-546cc81a0ec1"/>
								<textElement textAlignment="Center" verticalAlignment="Middle">
									<font fontName="微软雅黑" size="18"/>
								</textElement>
								<textFieldExpression><![CDATA["列2"]]></textFieldExpression>
							</textField>
						</jr:columnHeader>
						<jr:column width="100" uuid="364c4c6a-5801-4940-81e5-b7db0d78840b">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="a6c67fcd-9ffc-4880-920a-c267364272bb"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列2.1"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="2591755c-3888-42b0-83ee-c7899fc87843"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field3}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
						<jr:column width="100" uuid="a10be905-f848-4c84-8195-12d40e21ee4b">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column4"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="d2dd748c-ba03-4fc5-b078-d63879e937c9"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列2.2"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="456b46fc-e3ad-431e-a91a-fd1a6542e717"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field4}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
					</jr:columnGroup>
					<jr:columnGroup width="200" uuid="4b043f8c-5806-4535-95ad-7d52320c260e">
						<property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [2]"/>
						<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
						<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
							<property name="com.jaspersoft.studio.unit.width" value="px"/>
							<textField>
								<reportElement x="0" y="0" width="200" height="30" uuid="47f3ecde-1ff4-4319-bab7-b90fb6adc76b"/>
								<textElement textAlignment="Center" verticalAlignment="Middle">
									<font fontName="微软雅黑" size="18"/>
								</textElement>
								<textFieldExpression><![CDATA["列3"]]></textFieldExpression>
							</textField>
						</jr:columnHeader>
						<jr:column width="100" uuid="af4419fe-def4-48f3-8a97-c6acd64d61f4">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column5"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="458dd0b2-4553-4a34-aac5-4e2b83e74339"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列3.1"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="3a567839-a741-4691-b5bc-3445558d5872"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field5}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
						<jr:column width="100" uuid="77891f04-3fa6-498e-b0ec-0e9fd696093c">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column6"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="80897965-acdf-4d0d-b521-e3215dcff5b8"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列3.2"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="d276be55-51b5-4cb3-a299-638843d7c7c9"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field6}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
					</jr:columnGroup>
					<jr:columnGroup width="200" uuid="cca40e2d-985a-49a8-8b04-f9b01b273038">
						<property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [2]"/>
						<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
						<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
							<property name="com.jaspersoft.studio.unit.width" value="px"/>
							<textField>
								<reportElement x="0" y="0" width="200" height="30" uuid="e613c53c-ba22-4335-b360-76a164900fc0"/>
								<textElement textAlignment="Center" verticalAlignment="Middle">
									<font fontName="微软雅黑" size="18"/>
								</textElement>
								<textFieldExpression><![CDATA["列4"]]></textFieldExpression>
							</textField>
						</jr:columnHeader>
						<jr:column width="100" uuid="f1e5b819-4f67-42bb-9813-7535f983c86a">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column7"/>
							<jr:columnHeader style="Table_CH" height="20" rowSpan="1">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="349a1a85-f2e6-47a2-833a-ec7f8ef3c67f"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列4.1"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="21492072-1b5e-4b55-b414-28d37c1efd14"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field7}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
						<jr:column width="100" uuid="7ebafbb6-1aff-46aa-b607-b02dc7bb67d0">
							<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column8"/>
							<jr:columnHeader style="Table_CH" height="20">
								<textField>
									<reportElement x="0" y="0" width="100" height="20" uuid="f59dde66-9984-441b-a50d-9d70d34ab422"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑" size="12"/>
									</textElement>
									<textFieldExpression><![CDATA["列4.2"]]></textFieldExpression>
								</textField>
							</jr:columnHeader>
							<jr:detailCell style="Table_TD" height="30">
								<textField>
									<reportElement x="0" y="0" width="100" height="30" uuid="f2af772d-4a79-416c-85dd-eff2e7183eb3"/>
									<textElement textAlignment="Center" verticalAlignment="Middle">
										<font fontName="微软雅黑"/>
									</textElement>
									<textFieldExpression><![CDATA[$F{field8}]]></textFieldExpression>
								</textField>
							</jr:detailCell>
						</jr:column>
					</jr:columnGroup>
				</jr:table>
			</componentElement>
		</band>
	</detail>
	<pageFooter>
		<band height="54" splitType="Stretch"/>
	</pageFooter>
</jasperReport>

7.2.3 启动tomcat并访问

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值