1

iReport/JasperReports を使用して XML ファイル内に CSV フィールドをプロットすることは可能ですか?

XML ファイルがあり、そのフィールドの 1 つが次のようになっています。

<values>48,59,59,58,53,53,52,55,50,52,54,56,57,59,60,57,56,55,58,62</values>

その数値を使用してプロットを作成するにはどうすればよいですか? または、その数値を使用して、プロットで使用できるサブデータセットを作成するにはどうすればよいですか?


UPDATE : 次の変数式を使用して、String[] 変数を作成しました。

<variableExpression><![CDATA[$F{values}.split(",")]]></variableExpression>

だから今、私は文字列の配列を持っていますが、それをプロットする方法をまだ見つけることができません. 何か案は?
この男にもこの問題があり、誰も彼に答えませんでした:配列を使用したチャートの構築


UPDATE2 : String[] が で List に変換されましたArrays.asList($F{values}.split(","))。しかし、チャート シリーズでカテゴリ式として何を使用できるかわかりません。

ここに画像の説明を入力

4

2 に答える 2

0

@josefprochazka が指摘したように、ソリューションはカスタム DataSource を作成してサブレポートに渡すことでした。しかし、私は JasperReports の専門家ではなく、カスタム データソースの作成に時間がかかりました。コードとチュートリアルを使用したソリューションを次に示します。私はそれを3つのステップに分けます:

  1. クラスを含む *.jar を作成する必要implements JRDataSourceがあります (これがカスタム データソースになります)。
  2. そのjarをJavaプロジェクトおよび/またはiReportに追加します
  3. iReport/jrxml でカスタム データソースのインスタンスを作成し、それをサブレポートに渡します。

So, the first step is not that hard once you know how to do it. I've used the following tutorial: http://community.jaspersoft.com/wiki/building-custom-datasource-yahoo-finance-data
Basically what you have to do is implement two methods: getFieldValue(JRField f) and next(). Here is a complete example using 3 fields: http://pastebin.com/jX0wJVGi
Once you finish that class, create a .jar with it and add it to your projects classpath. In iReport go to Tools->Options, select "Classpath" tab and add your jar there.
Same in Eclipse if you are using JasperReports there too.

Finally we are going to instantiate our custom DS in the report:

<subreport>
    <reportElement uuid="52f64c56-b410-45a7-b391-828ef35e0103" positionType="Float" x="0" y="245" width="555" height="32"/>
    <dataSourceExpression><![CDATA[new com.dbelectronics.BandasCSVDatasource($F{csv_field1},$F{csv_field2})]]></dataSourceExpression>
    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "your_subreport.jasper"]]></subreportExpression>
</subreport>

ご覧のとおりBandasCSVDatasource、2 つのパラメーターを指定して呼び出しました。それぞれのパラメーターには、コンマで区切られた 20 個の数字を含む文字列が含まれています。

さて、あとはサブレポートを作成してフィールドをマッピングするだけです:

<queryString>
    <![CDATA[]]>
</queryString>
<field name="Verificacion" class="java.lang.String"/>
<field name="Calibracion" class="java.lang.String"/>
<field name="Banda" class="java.lang.String"/>

次に、グラフを追加し、そこにあるフィールドを使用します。チャートシリーズの例

それが役に立てば幸い。そして、ジョセフに再び感謝します。

于 2013-06-21T09:53:08.333 に答える