- - PR -
Velocityでxml形式テンプレートでの繰り返し処理
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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