Excel帳票 - 一覧表示
最終更新日: 2022年11月22日
R8 | R9
Excel帳票機能を設定した顧客モデルの一覧表示画面を開きます。図1に示すように「帳票(全件)」ボタンが用意されています。
このボタンを押下すると、Excel形式のファイルがダウンロードされます。(図2)
Excelでファイルを開きます。この顧客の一覧情報がレイアウトされていることがわかります。これをプリンタで印刷することで帳票出力を行います。
一覧表示の帳票出力では、現在画面に表示されているデータではなく、検索条件で適合したすべてのデータが対象になります。(例 100件のデータを検索し、画面には10件表示されている場合、帳票出力は100件が対象となります。)
Excel帳票の定義は、次の手順で行います。
ここでは、それぞれの手順の一覧を説明します。
「画面>帳票出力」タブを開きます。帳票出力設定欄で、次の設定を行います。
図4の設定後にビルドすると、Wagbyインストールフォルダ内のwork/reportフォルダ内に、テンプレートファイル名で指定したExcelファイルが自動生成されます。(図5)
このテンプレートファイルをExcelで開くと、図6のようになっています。レイアウト設計なしで、項目名とプレースホルダが列挙されています。
モデル定義で、一覧表示として指定した項目がプレースホルダとして使われます。
ここで "${" ではじまり、"}" で終わる部分をプレースホルダと呼びます。プレースホルダの構造は次のとおりです。最後の "#" は、行が増えることを示します。
プレースホルダには、実際の値が設定されます。プレースホルダの記述ルールの詳細は"プレースホルダ"をお読みください。
このプレースホルダ表記を残しつつ、帳票レイアウト設計を行います。図7にレイアウトの例を示します。
一覧帳票用のテンプレートでは詳細帳票とは異なり、レコード数が動的に変更されます。そのためプレースホルダは1行にのみ記述します。(帳票処理時に、出力レコード数だけ自動的に追加されます。)
用意される帳票テンプレートには、繰り返しコンテナ内の項目は含まれません。
ビルドしたアプリケーションにシステム管理者でログオンします。モデルと、図7の帳票ファイルを紐付けるために「帳票テンプレート」の設定を行います。(図8)
新しい帳票テンプレートを作成します。(図9)
ID項目は、Designerに設定した帳票テンプレートID(図4)を指定します。拡張子 (.xls や .xlsx) は含めません。
ここでは適用モデルを "顧客" とします。説明欄は自由に設定してください。[詳細...]
テンプレートファイルとして、図7を保存したExcelファイルを指定します。(図10,図11)
ここで登録したテンプレートファイルは、upload_dir フォルダ以下に保存されます。詳細は"文字列 " ファイル > 仕様 > 内部の構造"をお読みください。
一覧帳票用ボタンを二種類用意することができます。一つは、現在表示されているデータのみを出力するボタン。もう一つの "(全件)" という文字が付与されたボタンは、すべてのデータを出力するボタンです。
Designer側で指定する表示画面のタイプを「一覧表示」とします。
検索処理を実行するまで、帳票ボタンを表示させない設定を行うことができます。必ず検索処理を実行させるようにすることで、大量データの全件出力を行わせないようにします。
「画面 > 検索・一覧表示画面 > 検索画面 > 検索画面遷移直後の検索処理を止める」を有効にします。
「画面 > 帳票出力」で、帳票タイプが一覧表示のボタン表示条件として次の式を設定します。
RESULTSIZE 関数は、検索結果数を返します。
帳票テンプレート設定で、出力ファイル名を指定することができます。固定値を設定します。
出力される Excel のシート名になります。
出力される Excel のファイル名になります。
一覧帳票では無効です。(設定は無視されます。)
プレースホルダを指定することができます。ファイル名は、拡張子も含めて指定してください。例を示します。
プレースホルダでは、モデル名の後ろに接尾後 "_lp" を付与します。最後の ".0" は先頭行のデータを意味します。
出力ファイル名が空欄の場合、テンプレートファイル名が使われます。
プレースホルダに指定した項目は「一覧表示項目」として指定されている必要があります。一覧表示項目として指定し、表示時には隠し項目とすることもできます。
テンプレートファイルが .xls 形式ファイルだが、出力ファイル名を .xlsx とする、といったことはできません。出力ファイル名を指定するときは、テンプレートファイルの拡張子を使ってください。
帳票テンプレートで、出力方法を指定することもできます。空白時は "ダウンロード" となります。
一覧表示画面には表示させないが、一覧帳票には出力させるような定義を行うこともできます。
図17では、会社名項目は一覧表示として指定していません。
モデル項目詳細定義の「出力制御>その他>帳票>一覧帳票に出力する」をチェックします。(図18)
一覧帳票用のテンプレートから、出力しない項目のプレースホルダを記述しないようにします。
自動生成された一覧帳票テンプレートを用いている場合、当該項目のプレースホルダを除去してください。
一覧帳票用のテンプレートでは詳細帳票とは異なり、レコード数が動的に変更されます。そのためプレースホルダは1行にのみ記述します。生成されたWebアプリケーション側で必要なレコード数を増やす処理が行われます。このように、システム側で行の追加を行うことから、テンプレートファイルのレイアウトデザインにはいくつかの制限があります。
挿入されるレコードは0から連番で増えていきますが、詳細帳票とは異なり、ここでは連番部分を "#" という「ワイルドカード」で表現し、これを1行のみ記述します(例:${customer_lp.name.#})。
1行にプレースホルダを記述してください。複数行にわたって記述することはできません。プレースホルダが記述された行より下部分は「フッター」と判断され、レコード出力の最後に記述されます。
プレースホルダの指定されている行より下の部分は、一覧帳票のテンプレートでは「フッター」と判断され、レコードを追加した最後にコピーされます。ただし以下のような制限があります。
これらの制約は、プレースホルダ行より上部(ヘッダ部分)には適用されません。
繰り返し項目は「,(コンマ)」区切りで出力されます。
繰り返しコンテナ内の項目は出力できません。(JOIN関数などを用いて繰り返しコンテナを「1つの」文字列に整形した出力用項目を内部で用意し、それを帳票で用いることはできます。
モデル参照は「値」部分が出力されます。「コード」部分(モデルの主キー値)を指定することはできません。
全文検索の結果を指定することはできません。
列の値が同じであった場合にその列のセルを「(縦方向に)グルーピング」できます。このような処理を行わせたい場合は、プレースホルダに「$J」を付与します。
出力イメージは図21のようになります。
複数項目をグルーピングすることもできます。 $G○(数字)を指定することで、同じ数字を指定した項目すべてがグルーピングされます。
出力イメージは図23のようになります。$G1を含むセルに重複する値が存在した場合に自動的にセルの結合を行います。
データが一件も存在しない場合に印刷ボタンを押すと、図24のようなエラーメッセージが表示されます。これが標準の動作です。
エラーメッセージを出力しない設定とすると、図25に示すようにファイルが生成されます。しかしデータ部は空となっています。(図26)
「画面>帳票出力>出力対象データが無かったときにメッセージを表示する」を有効にします。(標準では有効になっています。)
Excel帳票出力機能は、オープンソースのExcel生成ライブラリである Apache POI を使って実現しています。
テキストエリア型の項目を Excel のセルに割り当てる場合、次の設定を行なってください。
文字列に改行コードが含まれていた場合は、改行コードもそのまま出力されます。
拡張子 ".xlsx" 利用時には次の制約があります。
例
ワンポイント
定義方法
Designerの設定
設定項目
説明
入力例
テンプレートファイル名
後述する「帳票テンプレート」の識別子になります。重複しない名前を英数字の組み合わせで決めてください。拡張子 (.xls や .xlsx) は含めません。
printListCustomer1
表示画面
一覧表示を選択します。
一覧表示
出力方式
Excelを選択します。
Excel
利用ライブラリ
出力方式に Excel を指定した場合、POIを指定します。Wagbyに同梱されているPOIのバージョン...
POI
表示する
この欄をチェックすると、帳票出力が有効になります。
-
表示条件
ボタンの表示条件式を記述することができます。「画面機能>ボタン名と表示条件のカスタマイズ」で説明しています。(ただし式中にモデル項目名は利用できません。一覧表示の場合、モデルの主キーを特定して値を読み出す方法は提供されていません。TODAY()など、モデル項目名に拠らない関数などは利用できます。)
(中略)
ボタン名
ボタン名を指定します。省略時は「"帳票" + 連番」となります。式を使ってボタン名を決定することもできます。(ただし式中にモデル項目名は利用できません。一覧表示の場合、モデルの主キーを特定して値を読み出す方法は提供されていません。TODAY()など、モデル項目名に拠らない関数などは利用できます。)
-
Excelテンプレートファイルのレイアウト設計
${モデル名_lp.項目名.#}
繰り返しコンテナは対象外
帳票テンプレートの設定
ワンポイント
ボタン名を変更する
例
定義方法
検索処理後にボタンを表示させる
検索画面遷移直後の検索処理を止める
一覧表示のボタン表示条件
RESULTSIZE() > 0
出力ファイルを変更する
シート名
出力ファイル名
出力ファイル名(一括帳票用)
定義方法
顧客情報一覧.xls
顧客情報${customer_lp.customerid.0}.xls
注意
注意
出力方法を変更する
一覧表示画面には表示させないが、一覧帳票には出力させる
一覧表示画面には表示させるが、一覧帳票には出力させない
一覧表示テンプレートのルール
(1) プレースホルダの添字(数字部分)は#で記述する
(2) プレースホルダを複数行にわたって記述しない
(3) フッター部分の制約
(4) 繰り返し項目の扱い
(5) 繰り返しコンテナ項目の扱い
(6) モデル参照の扱い
(7) 全文検索結果の扱い
同一値によるグルーピング
単一項目のグルーピング
$J${customer_lp.companyname.#}
複数項目のグルーピング
$G1${customer_lp.companyname.#}
$G1${customer_lp.deptname.#}
仕様
出力データが存在しなかった場合のエラーメッセージ
エラーメッセージを出力する (標準)
エラーメッセージを出力しない設定
定義方法
ライブラリの選択
仕様・制約
テンプレートファイル
テキストエリア型の扱い
テンプレートファイルに .xlsx を利用した場合
実行環境
トラブルシューティング