2011-07-30 84 views
3

JXLSを使用してテンプレートをExcelスプレッドシートに挿入しています。時には、1つの入力 - リスト - は空です。これが起こると、このリストを使用するテンプレートフィールドは、完全なJXLSレガリア(例えば、 "${someList.someValue}")の読み込まれたスプレッドシートに表示されます。入力リストが空の場合にJXLSのテンプレート行を削除します

フィールドはすべて1行になります(JXLSではlist.size()行に拡張されています)。リストにレコードがない場合は、行全体をクリアしたい。

JXLSで行う方法はありますか?また、JExcelやPOIを使って補完的な方法を提案する人もいますか?

答えて

2

Excelテンプレートの< jx:if >タグを使用できます。あなたは以下の

Row 1: <jx:if test="${!empty someData}"> 
Row 2: place holders for data that will be printed in the loop 
Row 3: </jx:if> 

に似たテンプレートを使用している場合someDataがが空でない場合は例えば は、行が出力に印刷されますが、someDataがが空であるならば、行はこのテンプレートで印刷されません。

私はそれを明確にすることができれば幸いです。タグの詳細については、http://jxls.sourceforge.net/reference/tags.htmlを参照してください。

+0

あなたの回答に感謝します。タグを使用しようとしましたが、パーサーは終了タグの '/'文字を読み取る例外をスローします。私のテンプレートのタグセルは、JXLSサイトの例に似ています。 –

+0

テンプレートコードを投稿できますか?構文エラーのように見えます。 –

+0

私のテンプレートは私のテストが違っていることを除いて、あなたの例に示されているものと同じタグを使用しています。例外は次のとおりです。スレッド "main"の例外java.lang.RuntimeException:式を設定できません:/ at net.sf.jxls.formula.FormulaControllerImpl.writeFormulas(FormulaControllerImpl.java:137)...原因:org。 apache.poi.ss.formula.FormulaParseException:指定された数式 '/'のchar 0 '/'近くの解析エラーです。期待されるセル参照または定数リテラル –

1

私は、これはPOIを介して可能だと思う - JXLSのおそらくPOIオブジェクトインタフェース:

http://poi.apache.org/spreadsheet/how-to.htmlから:
あなたはシンプルであるに読んだファイルを変更します。アセッサーメソッドを使用してオブジェクトを取得し、親オブジェクトのremoveメソッド(sheet.removeRow(hssfrow))を使用してオブジェクトを削除し、新しいxlsを作成する場合と同じようにオブジェクトを作成します。上記のように、セルの変更が完了したら、単にworkbook.write(出力ストリーム)を呼び出します。 http://jxls.sourceforge.net/reference/customprocessor.htmlから

:Rowオブジェクトで
あなたは、必要に応じてセルスタイルを変更するために、関連するPOIオブジェクトへのアクセス権を持っています。

+0

おかげ。私はSerkanの答えを受け入れました。なぜなら、JXLSの機能を使いやすくし、ロジックをテンプレートに保持するからです。 –

1

行がJXに基づいて表示されないもう一つの理由:JXの前にいくつかの領域がある場合、条件がある場合:もしあなたの応答ヤヒアのタグ

関連する問題