Interactive/CSVDataAdapter)
|--Adapter(CSVDataAdapterを記述したxml。 サンプルではReport/Interactive/CSVDataAdapter)
|--CSV(csvファイルの内容を記述したxml。サンプルではReport/Interactive/CSVDataAdapter)
|--ReportUnit(レポートユニット。サンプルではReport/Interactive/CSVDataAdapter)
|
|--Main jrxml(jrxmlファイル。サンプルではReport/Interactive/CSVDataAdapter)
|--Input Controls
|--Resources
作成するものは、jrxmlとadapterの2つです。
読み込ませたいcsvファイルは拡張子をxmlにして用意します。
adapterは以下の内容で作成します。
<?xml version="1.0" encoding="UTF-8"?>
<csvDataAdapter class="net.sf.jasperreports.
data.csv.CsvDataAdapterImpl">
<name>csv</name>
<!-- JasperServer上の読み込ませたいcsvのファイル名を指定
このファイル名は、iReportのRepositoryBrowserで指定したいファイルを右クリックすると
見られるプロパティから参照できる -->
<fileName>repo:/path/to/your/csv.xml</fileName>
<!-- csvのフィールドの区切り文字の設定。この例では\t -->
<fieldDelimiter>	</fieldDelimiter>
<!-- csvの改行文字の設定。この場合はCRLF -->
<recordDelimiter> </recordDelimiter>
<useFirstRowAsHeader>false</useFirstRowAsHeader>
<queryExecuterMode>true</queryExecuterMode>
<datePattern>yyyyMMdd</datePattern>
<columnNames>商品コード</columnNames>
<columnNames>商品名</columnNames>
<columnNames>受注日</columnNames>
<columnNames>受注金額</columnNames>
</csvDataAdapter>
jrxmlでは、subdatasetを作成します。
subdatasetの詳細は、jrxmlに直書きします。
jrxmlでは、読み込むadapterの指定と、
読み込んだデータの内容をテーブルで表示します。
読み込むadapterの指定は以下のようになります。
まず、subdatasetを追加します。
次に、jrxmlのxmlの編集モードにして以下のように
テーブルの部分を修正します。
修正は以下のように行います。
<subDataset name="Table Dataset 1" whenResourceMissingType="Error" uuid="b942ac65-dc78-4aec-bcc9-55149f314195">
<!-- adapterの指定。csvdataadapterのロケーションはiReportのRepositoryBrowserで指定したいファイルを右クリックすると見られるプロパティから参照できる -->
<property name="net.sf.jasperreports.data.adapter" value="repo:/reports/SequenceTest/sequeceTestAdapter"/>
<queryString language="csv">
<![CDATA[]]>
</queryString>
<!-- 読み込むcsvのカラム名 adapterの記述と合わせる-->
<field name="商品コード" class="java.lang.Integer"/>
<field name="商品名" class="java.lang.String"/>
<field name="受注日" class="java.lang.Date"/>
<field name="受注金額" class="java.lang.Integer"/>
</subDataset>
読み込んだデータの内容を以下のようにします。
まず、パレットからテーブル(表)を挿入します。
Table作成時に設定するconnectionはDon’t use any connection or data sourceとします。
テーブルの挿入先はsummaryにしました。
なぜかはわからなかったのですが、
detailではうまくできなかったので。
次に、挿入したら、jrxmlのxmlの編集モードにして以下のように
テーブルの部分を修正します。
なお、csvとのバインドは長いので、略しています。
<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" whenNoDataType="
AllSectionsNoDetail">
<!-- subDatasetの値は先程作成したsubDataset -->
<datasetRun subDataset="Table Dataset 1" uuid="8fd0b30c-518b-4f8d-a52e-ef893562ff21">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<!-- 以下、csvとのバインド -->
<jr:column width="60" uuid="be0991a7-fb7b-46b0-a608-9972fea89e1e">
<jr:columnHeader style="table 1_CH" height="30" rowSpan="1">
<staticText>
<reportElement uuid="e33d7bb9-a84c-4202-bba6-e1519913de57" x="0" y="0" width="60" height="30" isPrintWhenDetailOverflows="true"/>
<textElement>
<font fontName="MS 明朝"
pdfFontName="HeiseiMin-W3" pdfEncoding="UniJIS-UCS2-H"
isPdfEmbedded="true"/>
</textElement>
<text><![CDATA[商品コード]]></text>
</staticText>
</jr:columnHeader>
作成は以上となります。
これをiReportからアップロードすると
サーバ上で生成できます。
また、ここまではJasperServer上でadapterを使ってcsvを読み込む
方法ですが、
iReport上でadapterを使ってcsvを読み込むには、
jrxml・adapter・csv(拡張子はxml)を同じフォルダに入れて、
adapterで、csvを相対パスで指定します。
以上となります。
よろしくお願いいたします。