相关疑难解决方法(0)

将基本类型对象列表作为子报表的数据源传递

我需要借助master report的参数将一个dataSource传递给我的子报表List<String>.我不知道dataSource是什么类型是正确的以及如何在子报表中获取值.

我的主报告中的片段:

<parameter name="seznamPriloh" class="java.util.List" isForPrompting="false"/>
....
<subreport>
    <reportElement x="0" y="56" width="555" height="76"/>
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{seznamPriloh})]]></dataSourceExpression>
            <subreportExpression><![CDATA[cz.alis.keong.jasjdr.reporting.ReportCompiler.compile("R79_SeznamPriloh")]]></subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)

我的子报告中的代码段:

<detail>
    <band height="23">
        <textField>
            <reportElement x="56" y="3" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{}]]></textFieldExpression>
        </textField>
    </band>
</detail>
Run Code Online (Sandbox Code Playgroud)

请告诉我如何通过主报告的java.util.List<String>类型参数将数据源传递到子报告.

编辑次数:08.14 14:20将标签添加到Java

编辑:08.14 15:30涉及如何打印iReport中另一个列表中包含的字符串列表?适用于4.5.0和List<String>

java jasper-reports

18
推荐指数
3
解决办法
3万
查看次数

如何在Table组件的帮助下显示JRBeanCollectionDataSource数据?

我需要在Table组件(JasperReports)中显示JRBeanCollectionDataSource数据.

这是我的模板,ShowPerson.jrxml文件:

<?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="ShowPerson" pageWidth="612" pageHeight="792" whenNoDataType="NoDataSection" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="304c4c4e-c99a-4399-8081-748d3b7c0b8c">
    <style name="table">
        <box>
            <pen lineWidth="1.0" lineColor="#000000"/>
        </box>
    </style>
    <style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <subDataset name="Table Dataset 1" whenResourceMissingType="Empty" uuid="63b01547-bce2-47c9-ba15-666f94d11387">
        <queryString language="SQL">
            <![CDATA[]]>
        </queryString>
        <field name="name" class="java.lang.String"/>
        <field name="age" class="java.lang.Integer"/>
    </subDataset>
    <parameter name="INFO" class="java.lang.String"/>
    <title>
        <band …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports

12
推荐指数
1
解决办法
3万
查看次数

如何在iReport中打印另一个列表中包含的字符串列表?

我正在使用java和iReport(来自jasper)创建一个简单的报告程序,它应该用pdf创建一个报告,显示PC的IP地址,位置,此时是否空闲(由另一个系统处理),以及它目前所附的项目清单(也在其他地方管理).

我正在使用iReport这个问题,并创建了一个虚拟集合生成类,如下所示:

public class PCReports {

    public static java.util.Collection PC_collection;
    public static java.util.Collection generateCollection() {

        PC_collection = new ArrayList<PCLineDTO>();
        PCLineDTO line = new PCLineDTO();
        line.setIP("192.168.1.1");
        line.setLab("location");
        line.setActive(true);
        line.addProjectName("project1");
        line.addProjectName("project2");
        line.addProjectName("project3");
        PC_collection.add(line);

        line = new PCLineDTO();
        line.setIp("192.168.1.2");
        line.setLab("location2");
        line.setActive(false);
        line.addProjectName("project1");
        line.addProjectName("project2");
        PC_collection.add(line);

        return PC_collection;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,实体类是:

public class PCLineDTO {
    private String ip;
    private String lab;
    private Boolean active;
    private ArrayList<String> projects;
}
Run Code Online (Sandbox Code Playgroud)

在一些互联网搜索之后,我找到了一种使用子报告做类似事情的方法.

问题是,我不知道如何打印作为dataSource传递给该子报表的字符串集合.

在我在Internet上找到的示例中,对于主集合中的每个项目,子报表都传递了一组对象 - 每个属性都有自己的getter方法 - 而不是像这里的情况那样的字符串集合.在这些情况下,他们通过我无法使用的iReport语法访问他们需要使用的值,例如:

$F{project}
Run Code Online (Sandbox Code Playgroud)

由于iReport在其接收的对象中查找包含的getProject方法,但在这种情况下,它是一个简单的String对象(没有getProject方法,因为它).

jasper-reports javabeans ireport

11
推荐指数
1
解决办法
4万
查看次数

将自定义数据源添加到Jaspersoft Studio

我试图通过传递自定义数据源来填充表.我创建了一个包含表格的简单报告.报告它自己从ms sql数据库获取数据.我编写了一个类似于本例中的类的java类.但我在桌上没有任何价值.在该示例中没有scriptlet.我检查了(String) this.getFieldValue("KN_FormelGG"); 代码行.它从字段中获取数据并可以在报告中显示.所以我猜bean数据源没有填充.我在a中调用了填充表方法afterGroupInit.如何在jasper中使用java中的数据集合?我也尝试在数据集和查询对话框中添加java bean ,但它也没有帮助我.我应该将scriptlet添加到子报表/表吗?我的问题的主要重点是在scriptlet中具有自定义数据源.我解决另一个问题,但我仍然没有得到答案.我添加$P{FieldDataSource}.getData()了检查数据,但它提供了null.

java class 1:

package testProjektIman.scriptlets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class FillTable extends JRDefaultScriptlet {

    @Override
public void afterGroupInit(final String id)
        throws JRScriptletException {
    fillTable();
}
public ArrayList<String> splitGGArray(final String kNFormelGG) {
    ArrayList<String> fieldNames = new ArrayList<>();
    String[] array = (kNFormelGG.split(" "));
    for (String sub : array) {
        fieldNames.add(sub);
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports javabeans jaspersoft-studio

10
推荐指数
1
解决办法
3206
查看次数

带有JavaBean数据源的JasperReports 3.6中的动态列表

我正在使用iReport 3.6.

我有一个JavaBean类,它具有以下代码:

private Collection<String> containerNumber;

  public Collection<String> getContainerNumber()
  {    return containerNumber;  }


  public void setContainerNumber(Collection<String> pContainerNumber)
  {    this.containerNumber = pContainerNumber;  }
Run Code Online (Sandbox Code Playgroud)

当我让iReport 3.6读取这个JavaBean时,它会看到一个Collection(这就是我想要的).但我想在报告中将此集合显示为动态列表/字段.因此,当setContainNumber设置1个容器编号时,报告显示1个容器.当setContainerNumber设置10个容器时,报告显示10个容器.在我的报告中的容器下面,我有更多的字段,当它显示10个容器时,这些字段应该删除10个容器空间.当它显示1个容器时,这些字段应该丢弃1个容器空间.

我的问题:如何使用字符串集合显示动态列表作为JavaBean数据源?

java jasper-reports

6
推荐指数
0
解决办法
732
查看次数

传递 ArrayList 报告显示每个项目的逗号

我通过参数将字符串列表传递给 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());
Run Code Online (Sandbox Code Playgroud)

当报告开始时,它显示每个项目的逗号

item 1,
item 2,
item 3,
item 4,
etc etc 
Run Code Online (Sandbox Code Playgroud)

怎样才能避免呢?

我的碧玉报告 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>
Run Code Online (Sandbox Code Playgroud)

这是我的简单 xml 报告,只有一个参数 java.util.Arraylist

java arraylist jasper-reports

5
推荐指数
1
解决办法
2599
查看次数