$BR[]タグを使用してのセル結合

708 views
Skip to first unread message

takeshi

unread,
May 11, 2010, 4:18:41 AM5/11/10
to excella
はじめまして、takeshiと申します。

現在、ExCellaReportを使用するために、調査を行っておりますが、
1点質問がございます。

ExCellaReportsのサンプルソースで、「商品売上実績テンプレート.xls」を
使用したサンプルソースがあります。
上記の「商品売上実績テンプレート.xls」を開くと、B9のセルに「${商品名}」
があり、そのセルをB9~B11セルまで、3レコードほどセル結合して帳票を
出力すると、「${商品名}」の最初のデータのみセル結合されていて、それ
以降の「${商品名}」データのセルは結合が解除されてしまいます。

結合が解除されない方法はございますでしょうか?

--
このメールは Google グループのグループ「excella」の登録者に送られています。
このグループに投稿するには、exc...@googlegroups.com にメールを送信してください。
このグループから退会するには、excella+u...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/excella?hl=ja からこのグループにアクセスしてください。

tomo

unread,
May 11, 2010, 7:14:31 AM5/11/10
to excella
柴田です。

BRやBCのBlockタグ内では、結合セルは考慮していません。
(最初のデータはセルをそのまま使用しているため、結合されています)

現状では、テンプレートで結合セルは使用せず、
parse後のListenerで必要箇所を結合していただくことになります。

結合セルについては同様の相談・要望をいただいているため、
なんらかの対応が必要であると考えています。

以上、よろしくお願いします。

takeshi

unread,
May 11, 2010, 7:26:05 AM5/11/10
to excella
>柴田様

 ご返答ありがとうございます。
 ご返答については、了解致しました。

 度々申し訳ございません。
 ご返答で、「なんらかの対応」となっていますが、それについて
 対応を行う予定等はお決まりでしょうか?
> 詳細については、http://groups.google.com/group/excella?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

tomo

unread,
May 11, 2010, 7:36:38 AM5/11/10
to excella
柴田です。

「なんらかの対応」についてですが、
Blockタグの範囲が拡大するという仕様のため、
結合セルの扱いについてベストな方法を決めかねています。
(EXCELでのセル挿入時の動作と同じがよいかと思いますが)

現在のところ、対応の予定は未定です。

以上、よろしくお願いします。

takeshi

unread,
May 12, 2010, 12:50:16 AM5/12/10
to excella

>柴田様

 迅速にご返答頂きありがとうございます。

 申し訳ありませんが、もう1点お願いがございます。
 最初の質問のご回答で「parse後のListenerで必要箇所を結合する」と
 ご回答を頂きましたが、その実装方法のサンプル等があれば、
 頂ければと考えておりますが、いかがでしょうか?

 最初の質問で「商品売上実績テンプレート.xls」を使用したサンプル
 を頂ければ助かります。

 お手数をお掛けしますが、よろしくお願い致します。

tomo

unread,
May 12, 2010, 3:46:14 AM5/12/10
to excella
柴田です。

単純に商品名部分を結合するのであれば、以下のようにListenerを設定すれば
希望する帳票になるかと思います。
サンプルのように結合セルが同じサイズであれば、
比較的簡単に結合セルを設定することができます。

ProductSalesReporter.java
76~77行目
修正前
ReportProcessor reportProcessor = new ReportProcessor();
reportProcessor.process( outputBook1, outputBook2);

修正後
ReportProcessor reportProcessor = new ReportProcessor();
reportProcessor.addReportProcessListener( new
ReportProcessAdaptor() {

@Override
public void postParse( Sheet sheet, SheetParser
sheetParser, SheetData sheetData) throws ParseException {

//スタート行・・・6行目
int startIndex = 5;
//最終行
int lastRowIndex = sheet.getLastRowNum();
while(startIndex <= lastRowIndex){
sheet.addMergedRegion( new
CellRangeAddress( startIndex, startIndex + 2, 1, 1));
//3行毎
startIndex = startIndex + 3;
}
}

});
reportProcessor.process( outputBook1, outputBook2);


上記のサンプルソースProductSalesReporter.javaをアップしましたので、
ご確認ください。

以上、よろしくお願いします。

takeshi

unread,
May 12, 2010, 4:26:49 AM5/12/10
to excella

>柴田様

 お忙しいところ、お時間を割いて頂きありがとうございます。
 頂いたコードを参照して、今後の業務に役立てていきたいと
 思います。

 ご丁寧に教えて頂き、ありがとうございました。
Reply all
Reply to author
Forward
0 new messages