[Seasar-user:17331] Re: [Fisshplate]結合セルの自動拡張について
六
[E-MAIL ADDRESS DELETED]
2009年 4月 28日 (火) 13:37:49 JST
六です。
なんと!そういう書き方をすると結合が縦に拡張されるとは
コミッタでも知りませんでした・・・。
POIでは結合セルの情報は絶対座標というかなんというか
「A2からB3まで」というセル指定で領域を保持しているので
それをFisshplate内で相対座標に変換して持って、
出力時にその相対座標と現在位置を元に都度結合しなおしています。
ループで1行ずつ出力する時に、その行の結合セルの終わり行と
次の行の結合開始行が重なるためにどんどん結合が拡張されていってる
のではないかと思います。
それで、最後の行で1つはみ出るので、POI側の動きで
テンプレート上にない行が1行追加されるようですね。
#deleteRowのようなカスタムタグを作ったとしても書く場所が
ないのでいかんともしがたい・・・・
結合しない形でやるしかアイデアがないです。すみません・・・。
品目分類名と品目名の関係が親子構造であれば
二重ループで先ほど添付したテンプレートでほぼそのまま
いけるかと思います。indexは明示的に名前をつけた方がいいです。
親子じゃなくて、フラットに持っている場合は、#varや#execを使って
OGNLで昔の帳票プログラムのように自前でキーブレイクする処理を
書くのがいいかなーと思います。ベタですが。
キーブレイクの例は
http://fisshplate.sandbox.seasar.org/ja/syntax.html#%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E5%AE%9F%E8%A1%8C
が参考になればと。
うーむ・・・・こんなんですみません。
2009/04/28 12:58 Hidekazu Suzuki <[E-MAIL ADDRESS DELETED]>:
> 牧野さん、六さん、返信ありがとうございます。
>
>
> すいません、まず先ほどの私の例がちょっと間違っておりました。
> 実際は
>
> #foreach a : b
> ------------------------------------------
> | ${ItemKindName} | ${a.itemName} |
> | |----------------|
> #end | | | ← #end はココ
> ------------------------------------------
>
> です。
>
> このやり方だと
>
> ↓連結セルが自動に拡張される
> --------------------------------
> | 品目分類名 | 品目名1 |
> -----| |-----------|
> | | 品目名2 |
> -----| |-----------|
> | | 品目名3 |
> -----| |-----------|
> | | 品目名4 |
> -----| |-----------|
> | | |
> --------------------------------
>
> とできました。
>
> ここまでできていたので
> 行の削除ができないかなと思ったしだいです。
>
> あと品目分類名も単純化するために1つだけの例をご提示したのですが
> 実際は品目分類名1、品目分類名2...と複数あります。
>
> これは既にある案件のC/S→Webアプリ化を考えておりまして
> そのテンプレートが既に結合セルを使ってしまっているので
> できればそのままでと思っていました。
>
>
> 鈴木
>
> On Tue, 28 Apr 2009 11:41:20 +0900
> 六 <[E-MAIL ADDRESS DELETED]> wrote:
>
>> コミッタの六と申します。
>>
>> まず、Fisshplateでは結合セルの自動拡張はサポートしていません。
>> なので、例にあげられたようなテンプレートですと、出力結果は
>>
>> --------------------------------
>> | 品目分類名 | 品目名1 |
>> -----------
>> | | |
>> --------------------------------
>> | 品目分類名 | 品目名2 |
>> -----------
>> | | |
>> --------------------------------
>> | 品目分類名 | 品目名3 |
>> -----------
>> | | |
>> --------------------------------
>> | 品目分類名 | 品目名4 |
>> -----------
>> | | |
>> --------------------------------
>>
>> という形になるはずです。
>>
>> なので、ご要望の余分な行の削除以前に、結合セルの拡張が出来ません。
>> セルを結合する積極的な理由がなく、レイアウトの問題であれば
>> 結合をやめて罫線の引き方で同様のレイアウトを表現するのがお薦めです。
>>
>> かつ、1行目だけ「ItemKindName」を出力したいようなので、
>> if文を書くのがいいかなと思います。
>>
>> サンプルのテンプレートを添付しました。
>> 動作確認して、ご要望に近い形での出力になっています。
>> ご参考戴ければ幸甚です。
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内