java - 如何从自定义数据源创建图表或表格
问题描述
我正在使用 JasperReports 创建报告,我已经将数据从数据源传递到报告,但是我不确定如何让它与图表或表格一起使用,我确定它是我应该调用的 getdata 函数使用 JrDatasource 表达式,但我不知道如何调用它或包含什么。有人可以帮忙吗?
我尝试过使用参数,但没有使用自定义数据源的示例,只有我见过的其他数据源是 JRBean,这与我实现的不同。
private static final String[] nameArray = {"Frank", "Joseph", "Marco", "Carl", "Lenny", "Homer", "Teodor", "Leopold"};
private static final Integer[] ageArray = {50,30,40,46,44,26,32,21};
private int counter = -1;
private HashMap<String, Integer> fieldsNumber = new HashMap<String, Integer>();
private int lastFieldsAdded = 0;
@Override
public boolean next() throws JRException {
if (counter<nameArray.length-1) {
counter++;
return true;
}
return false;
}
@Override
public Object getFieldValue(JRField jrField) throws JRException {
Integer fieldIndex;
if (fieldsNumber.containsKey(jrField.getName()))
fieldIndex = fieldsNumber.get(jrField.getName());
else {
fieldsNumber.put(jrField.getName(), lastFieldsAdded);
fieldIndex = lastFieldsAdded;
lastFieldsAdded ++;
}
if (fieldIndex == 0) return nameArray[counter];
else if (fieldIndex == 1) return ageArray[counter];
return "";
}
public Object getFieldValue2(JRField jrField) throws JRException {
if (jrField.getName().equals("Name")) return nameArray[counter];
else if (jrField.getName().equals("Age")) return ageArray[counter];
return "";
}
public static JRDataSource getDataSource(){
return new Implementation();
}
Jrxml 表:
<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="LeveyJenDataset" uuid="0b1d0395-fcd9-471a-b840-e800fbc4cad8">
<dataSourceExpression><![CDATA[Implementation()]]></dataSourceExpression>
</datasetRun>
<jr:column width="100" uuid="3211405d-427f-43db-8d48-babd275bfaa8">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="a59d1ac1-555d-487d-8844-4e75510a2ce0"/>
<text><![CDATA[Field_1]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="995816a4-8066-421b-9a41-650fe35b0a11"/>
<textFieldExpression><![CDATA[$F{Field_1}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="100" uuid="174224c5-0ff0-41f2-be74-2a32f32d3d5f">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="59835446-f3e1-442b-a9fb-55243ec97d10"/>
<text><![CDATA[Field_2]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="fe462425-2890-4c63-83b3-46d02fb0b7dc"/>
<textFieldExpression><![CDATA[$F{Field_2}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
<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="LeveyJenDataset" uuid="0b1d0395-fcd9-471a-b840-e800fbc4cad8">
<dataSourceExpression><![CDATA[Implementation()]]></dataSourceExpression>
</datasetRun>
<jr:column width="100" uuid="3211405d-427f-43db-8d48-babd275bfaa8">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="a59d1ac1-555d-487d-8844-4e75510a2ce0"/>
<text><![CDATA[Field_1]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="995816a4-8066-421b-9a41-650fe35b0a11"/>
<textFieldExpression><![CDATA[$F{Field_1}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="100" uuid="174224c5-0ff0-41f2-be74-2a32f32d3d5f">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="59835446-f3e1-442b-a9fb-55243ec97d10"/>
<text><![CDATA[Field_2]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="fe462425-2890-4c63-83b3-46d02fb0b7dc"/>
<textFieldExpression><![CDATA[$F{Field_2}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
<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="LeveyJenDataset" uuid="0b1d0395-fcd9-471a-b840-e800fbc4cad8">
<dataSourceExpression><![CDATA[Implementation()]]></dataSourceExpression>
</datasetRun>
<jr:column width="100" uuid="3211405d-427f-43db-8d48-babd275bfaa8">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="a59d1ac1-555d-487d-8844-4e75510a2ce0"/>
<text><![CDATA[Field_1]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="995816a4-8066-421b-9a41-650fe35b0a11"/>
<textFieldExpression><![CDATA[$F{Field_1}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="100" uuid="174224c5-0ff0-41f2-be74-2a32f32d3d5f">
<jr:tableHeader style="Table_TH" height="30"/>
<jr:tableFooter style="Table_TH" height="30"/>
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="59835446-f3e1-442b-a9fb-55243ec97d10"/>
<text><![CDATA[Field_2]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter style="Table_CH" height="30"/>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="fe462425-2890-4c63-83b3-46d02fb0b7dc"/>
<textFieldExpression><![CDATA[$F{Field_2}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
在这里,我试图将 field_1 和 field_2 放到一个表中,但是它没有为该表输出任何内容,并且它说方法 Implementation() 未为报告定义
解决方案
我想通了,我只是手动将数据适配器添加到数据集中。
推荐阅读
- python - 仅提取一小时的时间戳数据。将其放入线性回归模型中。我需要一个热编码吗?
- ruby-on-rails - RoR 在 config.assets.debug = true 之前无法编辑样式
- python - Pandas read_csv only first comma
- backup - 如何备份/恢复 Firebird 数据库?
- swift - 如何使用 swift 解析字典中的 Any
- jquery - Symfony Form 没有得到应有的值
- ruby-on-rails - 如何在 Rails 中将控制权从一个控制器传递给另一个控制器?
- c# - C# 中 java.lang.Number 的等价物
- asp.net-mvc - 我收到 ASP.NET MVC 的“预期”错误
- vbscript - 如何在输出文本之间添加一行?