- PR -

Velocityでxml形式テンプレートでの繰り返し処理

1
投稿者投稿内容
yoh
会議室デビュー日: 2005/07/01
投稿数: 5
お住まい・勤務地: 関東
投稿日時: 2005-08-25 11:22
こんにちは。Java初心者ですm(_ _)m

現在以下の開発環境でWebからVelocityを使用しExcelを出力するプログラムを作成しています。

[ 開発・動作環境 ]
IBM WebSphereApplicatonServer 5.0 for Developers
DB2 Enterprise Server Edition V8.1.2 for Win
Internet Explorer 6.0(Windows2000 SP4)
eclipse 2.1.1
JDK1.3.1

テンプレートは以下のようにして作成し、出力しています。

1.エクセルで罫線を引いたり、置換対象文字を入れてxml形式で保存
2.xmlファイルを開き、VTLを書き込み保存→xmlファイルの拡張子をvmに変更
3.vmを使用してVelocityでマージする
4.Web画面から出力するとエクセルが表示される

繰り返しのデータが2つあり、表示する場所が
A8:E21の範囲とG9:R14の範囲でそれぞれ縦(行)の繰り返しで表示したいのです。
つまりエクセルで表示すると行が重なっているのですが、
作成したエクセルをxml形式で開き、繰り返したい場所だけを以下のように#foreach〜#endで囲ってみましたがエラーでした。

-<xml形式テンプレートの1行分抜粋(A8:E21の範囲の繰り返し)>----------

<Row ss:AutoFitHeight="0" ss:Height="19.5">
#foreach($tukibetuList in $tukibetuList)
<Cell ss:StyleID="s41"><Data ss:Type="String">$tukibetuList.tukiBetuY</Data></Cell>
<Cell ss:StyleID="s31"><Data ss:Type="String">$tukibetuList.tukiBetuM</Data></Cell>
<Cell ss:StyleID="s59"><Data ss:Type="String">$tukibetuList.tukiBetuUri</Data></Cell>
<Cell ss:StyleID="s31"><Data ss:Type="String">$tukibetuList.tukiBetuHenpin</Data></Cell>
<Cell ss:StyleID="s59"><Data ss:Type="String">$tukibetuList.tukiBetuJunUri</Data></Cell>
#end
<Cell ss:Index="9" ss:StyleID="s25"/>
<Cell ss:Index="11" ss:StyleID="s28"><PhoneticText
xmlns="urn:schemas-microsoft-com:office:excel">ウリアゲブスウ</PhoneticText><Data
ss:Type="String">売上部数</Data></Cell>
<Cell ss:StyleID="s28"><PhoneticText
xmlns="urn:schemas-microsoft-com:office:excel">ヘンピンブスウ</PhoneticText><Data
ss:Type="String">返品部数</Data></Cell>
<Cell ss:StyleID="s28"><PhoneticText
xmlns="urn:schemas-microsoft-com:office:excel">ジュンウリアゲブスウ</PhoneticText><Data
ss:Type="String">純売上部数</Data></Cell>
<Cell ss:StyleID="s28"><PhoneticText
xmlns="urn:schemas-microsoft-com:office:excel">ウリアゲブスウ</PhoneticText><Data
ss:Type="String">売上部数</Data></Cell>
<Cell ss:StyleID="s28"><PhoneticText
xmlns="urn:schemas-microsoft-com:office:excel">ヘンピンブスウ</PhoneticText><Data
ss:Type="String">返品部数</Data></Cell>
<Cell ss:StyleID="s28"><PhoneticText
xmlns="urn:schemas-microsoft-com:office:excel">ジュンウリアゲブスウ</PhoneticText><Data
ss:Type="String">純売上部数</Data></Cell>
</Row>
------------------------------------------------------------------

これの<Row></Row>間を#foreachで囲めばデータは出力されますが、
↑でいう下半分の「売上部数」などの部分は、もうひとつの繰り返し部分のヘッダーにあたるため、
ここまで#foreachで囲ってしまうと、このヘッダーまで繰り返し表示されてしまいます。
そしてもうひとつの繰り返し部分がひとつ下の行からになるので、
試しに↑の次の<Row></Row>間を別の#foreachで囲ってみましたが、それは何も表示されませんでした。
ということは、行が重なっている部分では2つ以上の繰り返し処理は埋め込めないのでしょうか?

色々探してみたのですが、エクセルを使用したサンプルのようなものが見つけられず、
XMLの知識もないため初歩的なところで躓いているのかもしれませんが。。。

参照するべきサイトや、原因など気になる点などがありましたらご教授お願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)