読者です 読者をやめる 読者になる 読者になる

山田健一のブログ

業務に強いフリーITエンジニア 山田健一のブログです

.NET で使用できる帳票ツールについて(4)

私はフリーITエンジニアとして、業務分析、業務改善提案を含む設計、製造、受入検査を含む検査、システム運用開始後の運用改善提案など、様々な分野を担当しています。

「.NET で使用できる帳票ツールについて」の続編です。

RapidReport の評価報告第2回目になります。

前回、「項目数が多いレポートでデザインの生産性を試す必要があるかなあ。。。と考え中です。」と書きましたが、そっちへ寄り道します。
あまり項目数が多いとはいえませんが、次のようなレポートを作成します。

f:id:yamadaken1:20151123150454j:plain

これはExcelから作成したPDFを表示して、キャプチャソフトで画像にしたものです。
この画像がレポートデザインの小道具になります。
RapidReport のホームページ

http://rapidreport.systembase.co.jp/

の紹介動画の最初の部分にありますので、こちらも参照してください。

この動画は、A4縦で、私がこれから作る帳票はA4横なので、1手間違います。

レポートデザイナを起動するとA4縦の白紙帳票が表示されますので、プロパティーウィンドウから、用紙設定を展開して「横方向」にチェックを入れます。

f:id:yamadaken1:20151123150804j:plain

必要なら、フォントも設定しておくと、フィールドなどを追加するときのデフォルトフォントになり、後が楽になります。
今回の帳票はゴシック10ptで作るで、既定値のまま進めます。

ツールバーの「画像」ボタンをクリックして、先ほどの画像を読み込みます。
私は正直にPDF表示画像を余白も含めてキャプチャしてしまったので、画像がずれています。
位置X,位置Yをマイナス方向に持って行くと、画像が望みの位置に収まるようになります。

f:id:yamadaken1:20151123150907j:plain

紹介動画ではコンテントに名前をつけていませんが、気持ち悪いので、コンテントを「ヘッダー」に変えてから、デザインウィンドウの□をドラッグしてヘッダーの高さを合わせます。
前回作成したレポート定義をダブルクリックして、別のレポートデザイナを開き、ページ番号部分をコピペします。
次にレポート表題である「執筆書籍一覧」を配置します。
フォントサイズをプロパティーウィンドウで指定するので、テキストもプロパティーウィンドウで設定します。
余談ですが、クリレポではテキスト編集がプロパティーシートでできないので、テキストもフォントも同じ場所で設定できるのは当たり前だけれど嬉しいですね。

ここで、プレビューを見ると、なぜか、背景画像は表示されません。「画像」ボタンはデザイン用なのですね。
削除する必要がないのが嬉しいですね。
ついでにデザイン用のデータをDBから取得しておきます。データ取得は前回説明しています。

次に列見出しをヘッダーに配置します。背景画像になぞって1つ作成します。四角形プロパティーで枠線を指定したり、背景色を silver にしたりするので、最初の項目をきっちり作り、あとはコピペ、Alt+ドラッグで配置、修正と作業していきます。
クリレポに比べて楽ですね。
と、思ったら、Alt+ドラッグでもうまくくっついてくれない時があります。
そんな時は左のテキストの x2 を右のテキストの x1 にコピーすれば、くっつきます。
完璧に背景画像に合わせるのは難しいな。。。。
多少のズレは目をつぶろう。大事なのは横一線に揃っているのと、項目がくっついていることだから。
ちなみにテキスト修正はダブルクリックでするほうが楽です。
また、テキストを右クリックして「要素の直接編集」を選択するとJSON形式の定義を見ることができますので、x2 と x1 が離れていないか、重なっていないかを確認することができます。

次は明細定義です。
ちょっと面倒です。
チュートリアルを参考にして、グループの下にボディを作り、ボディの下に明細グループを作り、明細グループの「明細」にチェックを入れ、明細グループの下に自動で追加される(コンテント)を明細にします。
1発でできないものか。。。

f:id:yamadaken1:20151123151154j:plain

 

 

明細コンテントの高さをドラッグで伸ばしてからフィールドを追加していきます。
(※)ただし、高さを伸ばしすぎてはいけません。私は明細コンテントをページいっぱいまでドラッグして広げてしまったため、1ページに1行しか表示されないという失敗をしました。これについては、失敗に気づいた顛末として記述してあります。

フィールドには 式 を指定する必要がありますが、「式...」ボタンをクリックしてデータフィールドを簡単に指定できます。
これは、デザイン用のデータを取得しているからです。
データフィールドが表示されない時はプレビューを表示させてからデザイン用データを取得してください。

f:id:yamadaken1:20151123151344j:plain

必要なら、書式も指定します。垂直揃えの既定値が top なので center にしたほうがよいと思いますが、好みで設定してください。

ISBNだけ追加してプレビューを見ると、「あれ?」という現象発生です。
1ページに明細が1行しか表示されません。また、2ページ目にヘッダーがありません。
前回作成の定義と見比べると、ヘッダーコンテントの「毎ページ表示」にチェックが無いことが分かりましたので、ヘッダーコンテントの「毎ページ表示」にチェックを入れてプレビューを見てみるとヘッダーは毎ページに表示されるようになりました。
明細の違いを探すと明細コンテントのサイズが大きすぎることが分かりました。
明細コンテントは、1行の定義なので、(※)のようにしたのが失敗でした。

まず、1フィールド追加してからプレビューを見ることをお勧めします。明細の高さ不足がある場合、ここで判明します。

ここまで作業してお昼になったので、作業を中断し、データを保存して、レポートデザイナも終了させました。

お昼ごはんを食べ終わって作業再開です。保存しておいたレポート定義をダブルクリックすると、あら不思議。。。デザイン用の画像が消えています。デザイン用の画像は保存されないんですね。
デザインを途中で中断する可能性があるときは画像の位置を控えて置かないと、続きを再現できないので要注意です。
私の場合は、残りはフィールド定義だけなので、かえって、デザイン用の画像はないほうがありがたいので、このまま進めます。
この帳票は罫線つきで、ISBNフィールドは四角形プロパティーを設定したりしているので、このフィールドをコピーして修正していきます。
サイズを広げるときは サイズハンドルを Alt+ドラッグでうまくヘッダーに合わせてくれました。縮める時も同様です。
書名フィールドには、「縮小して全体を表示」にチェックを入れます。
初版発行月フィールドには、yyyy年MM月の書式を設定し、中央寄せにしました。

このようにして次のようなPDFを作成することができました。

f:id:yamadaken1:20151123151557j:plain

今回は、慣れないゆえの落とし穴などに悩みましたが、これらは次の時は解消されているので、クリレポより断然いいですね。


前回、「もう1つの不満点が、フィールド配置です。x1,x2,y1,y2 と言った座標で指定するので、X,Y,Height,Width で指定するVisual Studioと互換性がないので慣れるまで大変かなという感じです。」と書きましたが、これは、クリレポのデザイン操作性の悪さを自分なりに解決する方法として、Left,Width を計算したExcelファイルを元にしてデザインを行っていたことからの不満点でした。
RapidReport では Alt+ドラッグが便利ですし、うまくいかない時は左と右と別々に設定できる x1,x2 方式の方がよいように感じました。(だんだん文化に慣れてきたな)

RapidReport の「画像を元にしてデザイン」という手法は、「目からウロコ」のように感じました。


続きます。