例
Excel帳票機能を設定した顧客モデルの詳細表示画面を開きます。図1に示すように「帳票」ボタンが用意されています。
このボタンを押下すると、Excel形式のファイルがダウンロードされます。(図2)
Excelでファイルを開きます。この顧客の詳細情報がレイアウトされていることがわかります。これをプリンタで印刷することで帳票出力を行います。
定義方法
Excel帳票の定義は、次の手順で行います。
- Designerによるボタン設定とビルド。
- ビルドによって得られたExcelテンプレートファイルのレイアウト設計
- (ビルドした)Wagbyアプリケーションで行う「帳票テンプレート」の設定
ここでは、それぞれの手順の詳細を説明します。
Designerの設定
「画面>帳票出力」タブを開きます。帳票出力設定欄で、次の設定を行います。
ワンポイント
帳票設定数の上限はありません。「+」ボタンを押下すると、設定欄が追加されます。
Excelテンプレートファイルのレイアウト設計
図4の設定後にビルドすると、Wagbyインストールフォルダ内のwork/reportフォルダ内に、テンプレートファイル名で指定したExcelファイルが自動生成されます。(図5)
テンプレートファイルの形式8.3.0
自動生成されるテンプレートファイルは次のルールに従います。
|
R8.2.3まで | R8.3.0以降 |
テンプレートファイルの拡張子を指定しない |
.xlsファイル |
.xlsxファイル |
テンプレートファイルの拡張子を.xlsxとする |
.xlsファイル |
.xlsxファイル |
テンプレートファイルの拡張子を.xlsとする |
.xlsファイル |
.xlsファイル |
このテンプレートファイルをExcelで開くと、図6のようになっています。レイアウト設計なしで、項目名とプレースホルダが列挙されています。
ここで "${" ではじまり、"}" で終わる部分をプレースホルダと呼びます。プレースホルダの構造は次のとおりです。
プレースホルダには、実際の値が設定されます。プレースホルダの記述ルールの詳細は"プレースホルダ"をお読みください。
このプレースホルダ表記を残しつつ、帳票レイアウト設計を行います。図7にレイアウトの例を示します。
帳票テンプレートの設定
ビルドしたアプリケーションにシステム管理者でログオンします。モデルと、図7の帳票ファイルを紐付けるために「帳票テンプレート」の設定を行います。(図8)
新しい帳票テンプレートを作成します。(図9)
ID項目は、Designerに設定した帳票テンプレートID(図4)を指定します。拡張子 (.xls や .xlsx) は含めません。
ここでは適用モデルを "顧客" とします。説明欄は自由に設定してください。[詳細...]
テンプレートファイルとして、図7を保存したExcelファイルを指定します。(図10,図11)
ボタン名を変更する
例
詳細表示画面に用意される帳票用ボタン名を "Excel印刷" に変更した例を図12に示します。
定義方法
Designer側でボタン名を指定します。
出力方法を変更する
帳票テンプレートで、出力方法を指定することもできます。空白時は "ダウンロード" となります。
ダウンロード
ファイルをダウンロードします。
ブラウザで表示
ファイルをブラウザで表示します。 2024年現在、多くのブラウザでこの方法はサポートしていません。
サーバに保存
帳票ファイルを(Wagbyアプリケーションが稼動している)サーバ上の指定フォルダに書き込みます。この設定を行ったとき、「出力フォルダ」をあわせて指定してください。サーバ上のフォルダを指定します。
"サーバに保存(上書きする)"を選択した場合、すでに同名の帳票が出力済みの場合、ファイルを上書きします。
"サーバに保存(上書きしない)"を選択した場合、すでに同名の帳票が出力済みの場合、ファイル名に "_1" "_2" ... を付与します。(*)
ファイルを保存したあと、画面にメッセージを表示します。保存に失敗すると、画面にエラーメッセージを表示します。
ファイル名に用いるプレースホルダ
詳細帳票テンプレートのファイル名に次の書式を用いることができます。
プレースホルダ |
説明 |
例 |
${username} |
ログオンアカウント |
${username}.xls |
${createdatestr} |
出力日付時刻を表す文字列。yyyyMMddHHmmss形式。 |
${createdatestr}.xls |
プレースホルダは組み合わせることができます。例えば ${username}${createdatestr}.xls と指定することができます。
出力ファイルを変更する
帳票テンプレート設定で、出力ファイル名を指定することができます。固定値を設定します。
シート名
出力される Excel のシート名になります。
- 詳細帳票、一括帳票いずれにも反映されます。
- プレースホルダを利用できます。
- プレースホルダとして特殊表記 ${sheet} を利用できます。シート番号を示します。
- 拡張子は含めないようにしてください。
- この設定は、PDF出力では無効です。(無視されます。)
- Excelのシート名に指定できない文字(コロン、円記号、疑問符、角カッコ、スラッシュ、アスタリスク)を含めることはできません。これらが含まれていた場合、自動的に除去されます。
- 上のURLに記載の内容に加え、"(",")" (小括弧) を含めることはできません。R8.3.3以降のWagbyでは、この文字が含まれていた場合、自動的に消去するようになっています。
出力ファイル名
出力される Excel のファイル名になります。また、一括帳票を展開したときの各Excelファイルのファイル名になります。
- ファイル名には拡張子を含めてください。(.xlsまたは.xlsx)
出力ファイル名(一括帳票用)
複数データの帳票を一度に出力するときのファイル名になります。
- 一括でダウンロードされるファイル名は固定です。プレースホルダは適用されません。
- 拡張子は含めないようにしてください。
- 漢字も利用できます。
- "ZIPファイル(1データ1Excelブック)"形式の場合、解凍後の各ファイル名のルールは上記「出力ファイル名」に準拠します。
- "Excelファイル(1データ1Excelシート)"形式の場合、シート名のルールは上記「シート名」に準拠します。
定義方法
プレースホルダを指定することができます。ファイル名は、拡張子も含めて指定してください。例を示します。
顧客情報${customer_p.customerid}.xls
出力ファイル名が空欄の場合、テンプレートファイル名が使われます。
出力ファイル名に利用するプレースホルダは、モデル名も含めるようにしてください。また、式の記述はできません。("+"などの文字列演算を行うことはできません。)
(誤)${name}+"_"+${currenttime}+"_"+${userid}+".xls"
(正)${customer_p.name}_${customer_p.currenttime}_${customer_p.userid}.xls
ワンポイント
出力ファイル名を計算式によって決めたい場合、出力ファイル名という項目をモデル定義内に用意するとよいでしょう。その項目名を、本設定欄に記載します。例 ${customer_p.generatedfilename}
注意
テンプレートファイルが .xls 形式ファイルだが、出力ファイル名を .xlsx とする、といったことはできません。出力ファイル名を指定するときは、テンプレートファイルの拡張子を使ってください。
繰り返し項目の固定長指定
詳細帳票テンプレートにおいて、繰り返し項目(コンテナを含む)や外部キー子モデルの項目は、テンプレートに記述した分だけ出力されます。
例を示します。下図のテンプレートにおいて、商談履歴の項目は繰り返しコンテナ項目となっています。
この繰り返しコンテナ項目には ${customer_p.report.0.rid} の行から ${customer_p.report.7.rid} の行までがプレースホルダとして指定されています。
DB上にレコードが1個しかない場合は、${customer_p.report.0.rid} の行はレコードの値が挿入され、${customer_p.report.1.rid} の行以降は空白に置換されます。
一方、DB上にレコードが9個以上ある場合は、最初のレコードから8個目までは帳票に出力されますが、9個目以降は出力されません。この場合は、あらかじめテンプレートの行数を増やし、プレースホルダも同じく追加することで対応してください。
繰り返し項目の可変長指定
繰り返し項目(コンテナ含む)のデータ数によって表示レイアウトを伸縮させる方法を説明します。
プレースホルダに次のような表記を行います。
例えば ${customer_p.report.#.rid} や ${customer_p.report.#.mdate} と記述します。これを一行にまとめて記述します。(複数行にまたがって記述することはできません。)
一つのテンプレートに複数の繰り返しコンテナを指定することもできます。出力する数に応じて帳票イメージが伸縮します。
セル結合の制約
繰り返しコンテナが一つも登録されていないデータの帳票出力でもセル結合がずれないように、コンテナ部に空のデータ行が1件、表示されます。(これによってセル結合が動作します。)
注意
本方式を用いた場合、繰り返しコンテナのある値の合計を求めるために、セル中に (Excelの) =SUM(D4:D5) などと記載することができません。SUM関数のセル範囲は固定で指定されているためです。(この部分を伸縮させることには対応できていません。)
このような場合は別途、Wagby側で合計を求めておき、それをExcel帳票に転記するようにしてください。
もしくは繰り返しコンテナを固定長として利用してください。(SUM関数の対象となるセル範囲と合わせることで、正しく動作します。)
フォーマットの制約
接頭語 fmt: は、可変長指定と併用することはできません。 この制約は R8.5.6 で解除されます。
子モデルの扱い
詳細帳票テンプレートに自身の子モデル(外部キーを利用したデータ)を表示させる場合も、繰り返し項目と同様に指定した数だけ表示されます。
詳細画面における外部参照モデルは一覧表示用のモデルを用います。モデル名は "xxx_lp" となります。
例えば顧客モデルの子モデルにサポートモデル(support)があった場合、顧客モデル(親)の帳票テンプレートに次のプレースホルダを指定できます。末尾の数字は固定指定による方式となります。
自動生成されるテンプレートファイル
詳細帳票(親側のモデル)に含まれる、外部キー子モデルのテンプレートファイルは showList<子>LpIn<親>.xls という命名規則で生成されます。図5に示す work/report フォルダに用意されます。
このファイルのテンプレート部分(図22)をコピーし、親側のモデルのテンプレートに貼り付けることで、図21のようなレイアウトを作成することができます。
ワークフロー(フローイベント)の扱い
モデルの詳細画面の下部に表示される「申請状況」の実体は「フローイベント」というものです。これは管理処理メニューから「ワークフロー > フローイベント検索」を開くことで確認できます。
詳細帳票に、このフローイベントを含むことができます。プレースホルダは次の通りです。
プレースホルダ |
説明 |
例 |
${jfcworkstate_lp.id.添字} |
フローイベントの主キー |
1000 |
${jfcworkstate_lp.modelname.添字} |
モデル名(日本語) |
年休申請 |
${jfcworkstate_lp.modelpkey.添字} |
対象モデルの主キー |
1000 |
${jfcworkstate_lp.username.添字} |
処理者のアカウント |
user1 |
${jfcworkstate_lp.username_jshfilename:image.添字}
${jfcworkstate_lp.username_jshfilename:image:col=XX:row=XX:sx=XX:sy=XX.添字}
|
処理者の電子印影画像。(この設定を行った場合のみ有効)col,rowは整数値。sx,syは0から1の範囲の小数値。[画像の埋め込み範囲の設定について...]8.5.0 |
jpeg,png画像ファイル |
${jfcworkstate_lp.processed_layerid.添字} |
フローの階層 |
0,1,2,.. |
${jfcworkstate_lp.event.添字} |
イベント |
Start,Application,... |
${jfcworkstate_lp.comment.添字} |
ユーザが入力したコメント |
"よろしくお願いします。" |
${jfcworkstate_lp.insert_date.添字} |
処理日 (日付時刻) |
2017-09-01 10:00:00 |
登録・更新画面に帳票ボタンを用意する
「帳票出力 > 表示画面」の選択肢で "新規登録", "コピー登録", "更新" を指定することができます。登録や更新画面に帳票出力ボタンが用意されます。
例
登録画面や更新画面に用意された帳票出力ボタンは次の動作となります。
- データベースに保存されている値ではなく、画面上の(変更途中の)値が帳票出力されます。
- ボタン押下後は、自画面(登録画面や更新画面)に戻ります。
ライブラリの選択
Excel帳票出力機能は、オープンソースのExcel生成ライブラリである Apache POI を使って実現しています。
仕様・制約
テンプレートファイル
- テンプレートファイルとして用いるExcelファイルの拡張子は ".xls" または ".xlsx" となります。
- テンプレートファイルのファイル名は半角英数字のみとしてください。日本語文字は指定できません。
- テンプレートの Excel ファイルでは、以下の機能を利用することはできません。
- ピボットテーブル
- ドロップダウンリスト
- パスワード保護
- テンプレートの Excel ファイルにマクロを設定した場合、正しく出力されないことがあります。この場合はマクロの内容を変えるなどして調整してください。
- 帳票(Excel)側の "表示形式" を、Wagby定義ファイルで指定することはできません。帳票へ出力する"型"は定義ファイルの型の設定に準じます。帳票データの表示形式は、帳票テンプレートファイル(Excel)の"セルの書式設定"で行ってください。
- 書式設定を指定したにも関わらず、有効にならない場合があります。その場合は、データ出力用のセルまたはシートと、帳票テンプレートの部分と分け、テンプレートでは出力されたデータを参照するよう設定を行ってみてください。詳細は"テンプレートファイル作成のポイント"をお読みください。データ出力用シートと、帳票テンプレートのシートを分ける方法を紹介しています。
- うまく印刷されない場合、帳票テンプレートの最初のシートに印刷領域が設定されているかどうかを確認ください。
- 帳票テンプレートの「印刷範囲」にマクロなどの式を設定することはできません。(設定しても Wagby では式の実行ができないため、無視されます。)
- プレースホルダから1つのセルに値をセットする場合、上限が32,767文字となります。
テキストエリア型の扱い
テキストエリア型の項目を Excel のセルに割り当てる場合、次の設定を行なってください。
- 当該セルの “セルを折り返して全体を表示する” を有効にする。
- セルの高さを事前に調整する。
文字列に改行コードが含まれていた場合は、改行コードもそのまま出力されます。
テンプレートファイルに .xlsx を利用した場合
拡張子 ".xlsx" 利用時には次の制約があります。
- テンプレートファイルにセルコメントを含めることができません。
実行環境
- Wagby アプリケーションを稼働させるサーバ機に Excel をインストールする必要はありません。サーバ機のメモリ上で直接 Excel ファイルを生成します。そのため出力処理中は一時的に多くのメモリを消費します。同時接続数が多い環境で、帳票出力が集中するような運用環境では、メモリを多めに搭載するようにしてください。
- Excel ファイルを開くために、各利用者の PC (端末) には Excel または OpenOffice が必要です。
トラブルシューティング
IE11利用時、ダウンロード時の保存、ファイルを開くボタンを素早く押すと"ファイルが移動または削除された可能性があります"というダイアログが表示される。
"CSV・Excel入出力 > ダウンロード > トラブルシューティング"をお読みください。
帳票の出力結果(Excelファイル)のサイズが0バイトとなる。
- 帳票テンプレートファイルが正しく登録されているか、確認ください。
- ログファイル (system.log) を確認してください。ここで "org.apache.poi" ではじまるクラスがエラーを出力している場合、テンプレートに指定できない関数またはマクロが含まれている可能性があります。
適用モデルの選択肢に、目的のモデルが表示されない
適用モデルの選択肢はシステムモデル "jfcmodel" を用いています。この情報が古い場合、目的のモデルが表示されません。対応方法...