我正在通过参数将字符串列表传递给 JasperReports 报告。
String jasperFileName = "C:\\TestReportProcess.jasper";
Map<String, Object> params = new HashMap<String, Object>();
params.put("List", getMyListOfString());
JasperPrint jprint = (JasperPrint) asperFillManager.fillReport(jasperFileName, params, new JREmptyDataSource());
当报告开始时,它显示每个项目逗号
item 1,
item 2,
item 3,
item 4,
etc etc
如何避免它?
我的jasper报表xml
<parameter name="List" class="java.util.ArrayList" isForPrompting="false"/>
<detail>
<band height="280" splitType="Stretch">
<textField isStretchWithOverflow="true" pattern="">
<reportElement x="0" y="13" width="550" height="45" uuid="f907894e-e9f1-418b-9ab8-1db276b8482e"/>
<textElement>
<font fontName="Antique Olive Compact"/>
</textElement>
<textFieldExpression><![CDATA[$P{List}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
这是我的简单xml报告,只有一个参数java.util.Arraylist
您可以通过<代码>列表
列表
该示例显示了这两种方法
我们使用列表填充列表项目参数
JRDataSource dataSource = new JRBeanCollectionDataSource(Arrays.asList("item 1", "item 2", "item 3", "item 4", "item 5", "item 6"));
Map<String, Object> params = new HashMap<>();
params.put("listOfItems", Arrays.asList("Title 1", "Title 2", "Title 3"));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
数据源包含 6 个项目(元素),用于在详细信息范围(主数据集)中显示。
参数listOfItems包含3个元素的列表,借助table组件的子数据集显示在标题带中。
汇总区用于显示如何显示<代码>列表中的数据
字段描述帮助我们获取字段的值。借助_THIS关键字,我们获得了字符串值。
<?xml version="1.0" encoding="UTF-8"?>
<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="Passing List of String" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<subDataset name="listDataset">
<field name="name" class="java.lang.String">
<fieldDescription><![CDATA[_THIS]]></fieldDescription>
</field>
</subDataset>
<parameter name="listOfItems" class="java.util.List"/>
<field name="item" class="java.lang.String">
<fieldDescription><![CDATA[_THIS]]></fieldDescription>
</field>
<title>
<band height="27">
<componentElement>
<reportElement x="340" y="0" width="200" height="15">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
</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="listDataset">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{listOfItems})]]></dataSourceExpression>
</datasetRun>
<jr:column width="200">
<jr:detailCell height="15">
<textField>
<reportElement x="0" y="0" width="200" height="15"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</title>
<detail>
<band height="15" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="15"/>
<textFieldExpression><![CDATA[$F{item}]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band height="60" splitType="Stretch">
<textField>
<reportElement x="0" y="15" width="100" height="15" />
<textFieldExpression><![CDATA[$P{listOfItems}.toString().replace(",", " ").replace("[", "").replace("]", "")]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true">
<reportElement x="300" y="40" width="100" height="15"/>
<textFieldExpression><![CDATA[$P{listOfItems}.toString().replace(", ", "\n").replace("[", "").replace("]", "")]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
List的用法。toString方法给出的结果如下:
[val1,val2]
-用逗号分隔并用方括号括起来的值。字符串的用法。replace方法(该方法的多次串行调用)给了我们很好的结果。
在JRPdfEx的帮助下生成的pdf文件如下所示:
示例:一个线程组:线程组的步骤:统计信息
在一个配置了多个应用项目和多个 Library 项目的多项目里,当同时运行所有测试的时候,测试结果整合到一份测试报告中可能是非常有用的。 为了实现这个目的,需要在同一个配置中添加另一个插件。可以通过以下方式添加: buildscript { repositories { jcenter() } dependencies { classpath
问题内容: 我遇到了我认为应该是一个非常简单的问题。 我需要将arrayList中的每个项目与列表中的其他所有项目进行比较,而无需将项目与其自身进行比较。它不像调用equals()比较那样简单,它涉及一些自定义逻辑,我在下面的代码中省略了这些自定义逻辑。而且,ArrayList不应以任何方式更改。 我似乎遇到的问题是,一旦进入第二个循环,我就不知道是否有另一个对象要与之比较(因为它是一个可变大小的
我是贾斯珀报告的新手。我成功地显示了一个带有碧玉报告的表格。但是如何通过Spring控制器在碧玉报告中显示多个表格? 我没有使用数据库作为数据源,只是在ArrayList中使用普通的POJO。 这是我的Spring配置 这是我的控制器。 人员类 如何定义不同的数据源,以便我可以在报表中使用两个(或更多)列表?或者,也许我可以使用一个包含多个列表的数据源?
我正在IntellijJavaIDE中运行一个Gradle构建。SonarQube runner Gradle插件与JaCoCo Gradle插件一起使用。 问题:我收到消息
我在Ubuntu12.10上运行NetBeans7.3。我正在学习一门Java Web开发课程,所以我有一个名为jsage8的项目,其中包含了我为该课程所做的工作。以前,这个项目在Projects选项卡中显示得很好,但现在打开这个项目什么也做不到。当我在打开项目菜单中单击打开它时,它只是说“没有项目打开”。然而,它将打开一个不是基于web的项目的普通Java项目文件夹。目前项目中只有一个index