Excel帳票 - 一覧表示

最終更新日: 2022年11月22日
R8 | R9

Excel帳票機能を設定した顧客モデルの一覧表示画面を開きます。図1に示すように「帳票(全件)」ボタンが用意されています。

図1 一覧画面に用意された帳票ボタン

このボタンを押下すると、Excel形式のファイルがダウンロードされます。(図2)

図2 Excelファイルがダウンロードされる

Excelでファイルを開きます。この顧客の一覧情報がレイアウトされていることがわかります。これをプリンタで印刷することで帳票出力を行います。

図3 Excelに埋め込まれた一覧情報

ワンポイント

一覧表示の帳票出力では、現在画面に表示されているデータではなく、検索条件で適合したすべてのデータが対象になります。(例 100件のデータを検索し、画面には10件表示されている場合、帳票出力は100件が対象となります。)

定義方法

Excel帳票の定義は、次の手順で行います。

  1. Designerによるボタン設定とビルド。
  2. ビルドによって得られたExcelテンプレートファイルのレイアウト設計
  3. (ビルドした)Wagbyアプリケーションで行う「帳票テンプレート」の設定

ここでは、それぞれの手順の一覧を説明します。

Designerの設定

「画面>帳票出力」タブを開きます。帳票出力設定欄で、次の設定を行います。

設定項目 説明 入力例
テンプレートファイル名 後述する「帳票テンプレート」の識別子になります。重複しない名前を英数字の組み合わせで決めてください。拡張子 (.xls や .xlsx) は含めません。 printListCustomer1
表示画面 一覧表示を選択します。 一覧表示
出力方式 Excelを選択します。 Excel
利用ライブラリ 出力方式に Excel を指定した場合、POIを指定します。Wagbyに同梱されているPOIのバージョン... POI
表示する この欄をチェックすると、帳票出力が有効になります。 -
表示条件 ボタンの表示条件式を記述することができます。「画面機能>ボタン名と表示条件のカスタマイズ」で説明しています。(ただし式中にモデル項目名は利用できません。一覧表示の場合、モデルの主キーを特定して値を読み出す方法は提供されていません。TODAY()など、モデル項目名に拠らない関数などは利用できます。) (中略)
ボタン名 ボタン名を指定します。省略時は「"帳票" + 連番」となります。式を使ってボタン名を決定することもできます。(ただし式中にモデル項目名は利用できません。一覧表示の場合、モデルの主キーを特定して値を読み出す方法は提供されていません。TODAY()など、モデル項目名に拠らない関数などは利用できます。) -
図4 帳票出力の設定

Excelテンプレートファイルのレイアウト設計

図4の設定後にビルドすると、Wagbyインストールフォルダ内のwork/reportフォルダ内に、テンプレートファイル名で指定したExcelファイルが自動生成されます。(図5)

図5 自動生成されたテンプレートファイル

このテンプレートファイルをExcelで開くと、図6のようになっています。レイアウト設計なしで、項目名とプレースホルダが列挙されています。

モデル定義で、一覧表示として指定した項目がプレースホルダとして使われます。

図6 項目名とプレースホルダが埋め込まれたExcelファイル

ここで "${" ではじまり、"}" で終わる部分をプレースホルダと呼びます。プレースホルダの構造は次のとおりです。最後の "#" は、行が増えることを示します。

${モデル名_lp.項目名.#}

プレースホルダには、実際の値が設定されます。プレースホルダの記述ルールの詳細は"プレースホルダ"をお読みください。

このプレースホルダ表記を残しつつ、帳票レイアウト設計を行います。図7にレイアウトの例を示します。

図7 帳票レイアウトを行った例

一覧帳票用のテンプレートでは詳細帳票とは異なり、レコード数が動的に変更されます。そのためプレースホルダは1行にのみ記述します。(帳票処理時に、出力レコード数だけ自動的に追加されます。)

繰り返しコンテナは対象外

用意される帳票テンプレートには、繰り返しコンテナ内の項目は含まれません。

帳票テンプレートの設定

ビルドしたアプリケーションにシステム管理者でログオンします。モデルと、図7の帳票ファイルを紐付けるために「帳票テンプレート」の設定を行います。(図8)

図8 帳票テンプレートメニュー

新しい帳票テンプレートを作成します。(図9)

図9 帳票テンプレートの新規登録を行う

ID項目は、Designerに設定した帳票テンプレートID(図4)を指定します。拡張子 (.xls や .xlsx) は含めません。

ここでは適用モデルを "顧客" とします。説明欄は自由に設定してください。[詳細...]

テンプレートファイルとして、図7を保存したExcelファイルを指定します。(図10,図11)

図10 帳票テンプレートの設定
図11 帳票テンプレートを登録した

ワンポイント

ここで登録したテンプレートファイルは、upload_dir フォルダ以下に保存されます。詳細は"文字列 " ファイル > 仕様 > 内部の構造"をお読みください。

ボタン名を変更する

一覧帳票用ボタンを二種類用意することができます。一つは、現在表示されているデータのみを出力するボタン。もう一つの "(全件)" という文字が付与されたボタンは、すべてのデータを出力するボタンです。

※ "現在表示されているデータのみ" とは、検索条件で抽出されたデータのうち現在のページに表示しているデータのみを帳票へ出力するというものです。例えば検索条件で100件抽出されても現在のページに表示されているのが10件であれば10件のみが帳票出力されます。
図12 二つの一覧帳票ボタン

定義方法

Designer側で指定する表示画面のタイプを「一覧表示」とします。

図13 Designerで「一覧表示」を指定する

検索処理後にボタンを表示させる

検索処理を実行するまで、帳票ボタンを表示させない設定を行うことができます。必ず検索処理を実行させるようにすることで、大量データの全件出力を行わせないようにします。

検索画面遷移直後の検索処理を止める

「画面 > 検索・一覧表示画面 > 検索画面 > 検索画面遷移直後の検索処理を止める」を有効にします。

図14 検索画面遷移直後の検索処理を止める

一覧表示のボタン表示条件

「画面 > 帳票出力」で、帳票タイプが一覧表示のボタン表示条件として次の式を設定します。

RESULTSIZE() > 0

RESULTSIZE 関数は、検索結果数を返します。

出力ファイルを変更する

帳票テンプレート設定で、出力ファイル名を指定することができます。固定値を設定します。

シート名

出力される Excel のシート名になります。

出力ファイル名

出力される Excel のファイル名になります。

  • ファイル名には拡張子を含めてください。(.xlsまたは.xlsx)
この設定は、HTTPレスポンスヘッダの"Content-Disposition"フィールドの"filename"属性に反映されます。

出力ファイル名(一括帳票用)

一覧帳票では無効です。(設定は無視されます。)

定義方法

プレースホルダを指定することができます。ファイル名は、拡張子も含めて指定してください。例を示します。

図15 出力ファイル名の指定
顧客情報一覧.xls
顧客情報${customer_lp.customerid.0}.xls

プレースホルダでは、モデル名の後ろに接尾後 "_lp" を付与します。最後の ".0" は先頭行のデータを意味します。

出力ファイル名が空欄の場合、テンプレートファイル名が使われます。

注意

プレースホルダに指定した項目は「一覧表示項目」として指定されている必要があります。一覧表示項目として指定し、表示時には隠し項目とすることもできます。

注意

テンプレートファイルが .xls 形式ファイルだが、出力ファイル名を .xlsx とする、といったことはできません。出力ファイル名を指定するときは、テンプレートファイルの拡張子を使ってください。

出力方法を変更する

帳票テンプレートで、出力方法を指定することもできます。空白時は "ダウンロード" となります。

図16 出力方法の指定

詳細は Excel帳票 > 詳細表示 > 出力方法 をお読みください。

一覧表示画面には表示させないが、一覧帳票には出力させる

一覧表示画面には表示させないが、一覧帳票には出力させるような定義を行うこともできます。 図17では、会社名項目は一覧表示として指定していません。

モデル項目詳細定義の「出力制御>その他>帳票>一覧帳票に出力する」をチェックします。(図18)

図17 モデル定義で、会社名項目の一覧表示を無効とした
図18 一覧帳票に出力する設定

一覧表示画面には表示させるが、一覧帳票には出力させない

一覧帳票用のテンプレートから、出力しない項目のプレースホルダを記述しないようにします。 自動生成された一覧帳票テンプレートを用いている場合、当該項目のプレースホルダを除去してください。

一覧表示テンプレートのルール

一覧帳票用のテンプレートでは詳細帳票とは異なり、レコード数が動的に変更されます。そのためプレースホルダは1行にのみ記述します。生成されたWebアプリケーション側で必要なレコード数を増やす処理が行われます。このように、システム側で行の追加を行うことから、テンプレートファイルのレイアウトデザインにはいくつかの制限があります。

図19 顧客情報の一覧帳票用テンプレートの例

(1) プレースホルダの添字(数字部分)は#で記述する

挿入されるレコードは0から連番で増えていきますが、詳細帳票とは異なり、ここでは連番部分を "#" という「ワイルドカード」で表現し、これを1行のみ記述します(例:${customer_lp.name.#})。

(2) プレースホルダを複数行にわたって記述しない

1行にプレースホルダを記述してください。複数行にわたって記述することはできません。プレースホルダが記述された行より下部分は「フッター」と判断され、レコード出力の最後に記述されます。

(3) フッター部分の制約

プレースホルダの指定されている行より下の部分は、一覧帳票のテンプレートでは「フッター」と判断され、レコードを追加した最後にコピーされます。ただし以下のような制限があります。

  • フッター部分でセルの結合はできません。セルの結合情報が残ってしまうため、追加されるレコードのセルに影響します。
  • 式を記述できません。式の情報は消去されます。あるいは式のエラーが発生します。
  • 画像を貼ることができません。画像が元のセル位置に残ってしまうため、結果的に画像の位置がフッターとは異なる場所に表示されてしまいます。

これらの制約は、プレースホルダ行より上部(ヘッダ部分)には適用されません。

(4) 繰り返し項目の扱い

繰り返し項目は「,(コンマ)」区切りで出力されます。

(5) 繰り返しコンテナ項目の扱い

繰り返しコンテナ内の項目は出力できません。(JOIN関数などを用いて繰り返しコンテナを「1つの」文字列に整形した出力用項目を内部で用意し、それを帳票で用いることはできます。

(6) モデル参照の扱い

モデル参照は「値」部分が出力されます。「コード」部分(モデルの主キー値)を指定することはできません。

(7) 全文検索結果の扱い

全文検索の結果を指定することはできません。

同一値によるグルーピング

単一項目のグルーピング

列の値が同じであった場合にその列のセルを「(縦方向に)グルーピング」できます。このような処理を行わせたい場合は、プレースホルダに「$J」を付与します。

$J${customer_lp.companyname.#}
図20 グルーピング指定

出力イメージは図21のようになります。

図21 グルーピングによる出力イメージ

複数項目のグルーピング

複数項目をグルーピングすることもできます。 $G○(数字)を指定することで、同じ数字を指定した項目すべてがグルーピングされます。

$G1${customer_lp.companyname.#}
$G1${customer_lp.deptname.#}
図22 グルーピング指定

出力イメージは図23のようになります。$G1を含むセルに重複する値が存在した場合に自動的にセルの結合を行います。

図23 グルーピングによる出力イメージ

仕様

  • グルーピング処理は行(横)方向への結合はできません。
  • 詳細帳票には対応していません。

出力データが存在しなかった場合のエラーメッセージ

エラーメッセージを出力する (標準)

データが一件も存在しない場合に印刷ボタンを押すと、図24のようなエラーメッセージが表示されます。これが標準の動作です。

図24 データが存在しない場合に印刷ボタンを押下する
図25 別タブにエラーメッセージが表示される

エラーメッセージを出力しない設定

エラーメッセージを出力しない設定とすると、図25に示すようにファイルが生成されます。しかしデータ部は空となっています。(図26)

図26 空のファイルが出力される(1)
図27 空のファイルが出力される(2)

定義方法

「画面>帳票出力>出力対象データが無かったときにメッセージを表示する」を有効にします。(標準では有効になっています。)

図28 出力対象データが無かったときにメッセージを表示する設定

ライブラリの選択

Excel帳票出力機能は、オープンソースのExcel生成ライブラリである Apache POI を使って実現しています。

仕様・制約

テンプレートファイル

  • テンプレートファイルとして用いるExcelファイルの拡張子は ".xls" または ".xlsx" となります。[注意点...]
  • テンプレートファイルのファイル名は半角英数字のみとしてください。日本語文字は指定できません。
  • テンプレートファイル内のシート名に "(",")" (小括弧) を含めることはできません。
  • テンプレートの Excel ファイルでは、以下の機能を利用することはできません。
    • ピボットテーブル
    • ドロップダウンリスト
    • パスワード保護
  • テンプレートの Excel ファイルにマクロを設定した場合、正しく出力されないことがあります。この場合はマクロの内容を変えるなどして調整してください。
  • うまく印刷されない場合、帳票テンプレートの最初のシートに印刷領域が設定されているかどうかを確認ください。
  • プレースホルダから1つのセルに値をセットする場合、上限が32,767文字となります。

テキストエリア型の扱い

テキストエリア型の項目を Excel のセルに割り当てる場合、次の設定を行なってください。

  • 当該セルの “セルを折り返して全体を表示する” を有効にする。
  • セルの高さを事前に調整する。

文字列に改行コードが含まれていた場合は、改行コードもそのまま出力されます。

テンプレートファイルに .xlsx を利用した場合

拡張子 ".xlsx" 利用時には次の制約があります。

  • テンプレートファイルにセルコメントを含めることができません。

実行環境

  • Wagby アプリケーションを稼働させるサーバ機に Excel をインストールする必要はありません。サーバ機のメモリ上で直接 Excel ファイルを生成します。そのため出力処理中は一時的に多くのメモリを消費します。同時接続数が多い環境で、帳票出力が集中するような運用環境では、メモリを多めに搭載するようにしてください。
  • Excel ファイルを開くために、各利用者の PC (端末) には Excel または OpenOffice が必要です。

トラブルシューティング

IE11利用時、ダウンロード時の保存、ファイルを開くボタンを素早く押すと"ファイルが移動または削除された可能性があります"というダイアログが表示される。
"CSV・Excel入出力 > ダウンロード > トラブルシューティング"をお読みください。