こんにちは!株式会社ウイングの樋熊です。
第1回、第2回の連載ではColdFusionの関数SpreadSheetReadを使ったエクセルのデータ出力、データ取込みを紹介し、
第3回目はエクセルのピボットテーブルとColdFusionのSpreadSheetReadを組み合わせた例を紹介しました。
最終回の上級編ではエクセルの帳票フォーマットを資産活用し、ColdFusionのスプレッドシート機能を利用しPDF化した例を紹介します。
エクセルで運用している帳票があれば、ColdFusionのスプレッドシート機能を使うことで簡単にPDF帳票が作成できます。
では早速ColdFusionのスプレッドシート機能を利用した「御見積書」のPDF帳票の作成を紹介します。
今回はプログラムのソースの公開は割愛させていただきます。
PDF生成までの処理の流れは以下のとおりです。
御見積書:メインシート(mainシート)
・ 当シートをPDF化します。
・ 企業名などの値が入るセルは設定シート(hidden)から参照させます。
【ポイント】
ColdFusionのSpreadsheetで直接mainシートに企業名など値を入れることも可能ですが、
レイアウトが崩れてしまう可能性があるのと、値の出力位置調整などプログラムの影響を抑えるため、
Spreadsheetでは設定シート(hiddenシート)へのみ値出力させます。
今回のサンプルでは背景色が黄色の箇所に設定シート(hidden)から参照の設定を行いました。
御見積書:設定シート(hidden)
見積データを出力するためのシートです。
下記はSpreadsheetで値を出力するまえの状態です。
企業名など取得したデータはColdFusionのSpreadsheetで設定シート(hiddenシート)へ書き込みをします。
以下が値を出力した後の設定シート(hiddenシート)のイメージです。
設定シート(hiddenシート)に出力したい値が入ると、自動でメインシートに値が表示されます。
企業名の表示位置やレイアウトを変えたい場合は、エクセル上でレイアウト修正と設定シートの参照先設定を変えるだけで対応できます。
ColdFusionのプログラムを修正せずレイアウト変更ができるのでメンテナンスがとても楽ですね。
Spreadsheetで作成したエクセルファイルをPDF形式へ変換を行います。
ここでは具体的な方法は割愛しますが、ColdFusionの標準機能でPDF変換ができないので、
PDF変換のJavaライブラリをColdFusionから呼ぶなど他の技術を使いPDF化します。
JavaであればColdFusionと連携し易く、CFOBJECTタグでJavaオブジェクトを呼び出し使用することができます。
Javaライブラリを使用したソース例
<!--- PDF変換用オブジェクトの作成 --->
<CFOBJECT type="java" class="xxx.xxx.xxx.xxx.PDFConverter" name="PDFConverter">
<CFSCRIPT>
// PDF変換処理
PDFConverter.convert("C:\source\cfsample\EstimateTemplate_yyyymmddhhmmss.xls",
"C:\source\cfsample\見積書_yyyymmddhhmmss.pdf");
</CFSCRIPT>
以上の処理を組み込むと、システム上からPDF帳票を出力する機能が簡単に作成できます。
今回は見積書の例を紹介しましたが、申込書や請求書なども様々な帳票に応用することができます。
全4回にわたり、ColdFusionとエクセルの連携を紹介しました。
Excelの出力・取り込みやエクセルの便利な集計機能を組み合わせたエクセル出力、ExcelのPDF化等複雑な処理も
ColdFusionならシンプルなプログラムで実装可能です。
エクセル生成、帳票生成をColdFusionなどプログラム側で全てやろうとすると非常に大変です。
今まで紹介した記事ではColdFusionで最低限のプログラムを行い、レイアウトや集計、装飾はエクセル側で行うよう
役割を分けることで作成コストやメンテナンスコストを下げることができます。
かつ、運用で使っているエクセルファイルがあれば、既存のエクセルをそのまま有効活用することが可能です。
アイディア次第では、エクセル機能も十分に活かしながら、便利な機能を作ることが出来ます。
是非ColdFusionとエクセル機能の組み合わせを試してみて下さい。