ColdFusionカフェテリア
SAMURAIZ

 

| ↑トップへ戻る |

【上級】ColdFusionのエクセル機能を利用したPDF帳票の紹介

作成日: 2015年2月18日
作成者: 株式会社ウイング 樋熊隆康
公開日: 2015年2月25日

■はじめに

こんにちは!株式会社ウイングの樋熊です。
第1回、第2回の連載ではColdFusionの関数SpreadSheetReadを使ったエクセルのデータ出力、データ取込みを紹介し、
第3回目はエクセルのピボットテーブルとColdFusionのSpreadSheetReadを組み合わせた例を紹介しました。

最終回の上級編ではエクセルの帳票フォーマットを資産活用し、ColdFusionのスプレッドシート機能を利用しPDF化した例を紹介します。
エクセルで運用している帳票があれば、ColdFusionのスプレッドシート機能を使うことで簡単にPDF帳票が作成できます。

■サンプル紹介

では早速ColdFusionのスプレッドシート機能を利用した「御見積書」のPDF帳票の作成を紹介します。
今回はプログラムのソースの公開は割愛させていただきます。

PDF生成までの処理の流れは以下のとおりです。

■エクセル出力の処理の流れ

準備  PDF出力用エクセルファイルの用意

 @ CFQUERYタグで帳票出力用のデータ取得を行う。
     ↓
 A 関数SpreadSheetReadで出力用エクセルファイルの読み取りを行う。
     ↓
 B クエリ取得データのエクセルファイル書き込み。
     ↓
 C 関数SpreadsheetWriteでBで作成したエクセルファイルをサーバに書き出す。
     ↓
 D エクセルファイルのPDF変換。
     ↓
 E CFHEADERタグ、CFCONTENTタグを使い、サーバに保存したPDFファイルをダウンロードさせる(ダウンロード後、サーバからPDFファイルを削除)。



それでは、今回重要な役割を果たす「PDF出力用エクセルファイル」の設定を説明します。

■PDF出力用エクセルファイルの用意

御見積書:メインシート(mainシート)
 ・ 当シートをPDF化します。
 ・ 企業名などの値が入るセルは設定シート(hidden)から参照させます。

  【ポイント】
  ColdFusionのSpreadsheetで直接mainシートに企業名など値を入れることも可能ですが、
  レイアウトが崩れてしまう可能性があるのと、値の出力位置調整などプログラムの影響を抑えるため、
  Spreadsheetでは設定シート(hiddenシート)へのみ値出力させます。

  

 

  今回のサンプルでは背景色が黄色の箇所に設定シート(hidden)から参照の設定を行いました。

  

 

御見積書:設定シート(hidden)
  見積データを出力するためのシートです。
  下記はSpreadsheetで値を出力するまえの状態です。

  

■Bクエリ取得データのエクセルファイル書き込み

企業名など取得したデータはColdFusionのSpreadsheetで設定シート(hiddenシート)へ書き込みをします。
以下が値を出力した後の設定シート(hiddenシート)のイメージです。

 

設定シート(hiddenシート)に出力したい値が入ると、自動でメインシートに値が表示されます。

企業名の表示位置やレイアウトを変えたい場合は、エクセル上でレイアウト修正と設定シートの参照先設定を変えるだけで対応できます。

ColdFusionのプログラムを修正せずレイアウト変更ができるのでメンテナンスがとても楽ですね。

■DエクセルファイルのPDF変換

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帳票を出力する機能が簡単に作成できます。
今回は見積書の例を紹介しましたが、申込書や請求書なども様々な帳票に応用することができます。

■ダウンロード

エクセルテンプレートは以下からダウンロードして下さい。
  ファイル名 ファイルサイズ  
Download EstimateTemplate.zip 59kb ・エクセルテンプレート

■総括

全4回にわたり、ColdFusionとエクセルの連携を紹介しました。
Excelの出力・取り込みやエクセルの便利な集計機能を組み合わせたエクセル出力、ExcelのPDF化等複雑な処理も
ColdFusionならシンプルなプログラムで実装可能です。
エクセル生成、帳票生成をColdFusionなどプログラム側で全てやろうとすると非常に大変です。
今まで紹介した記事ではColdFusionで最低限のプログラムを行い、レイアウトや集計、装飾はエクセル側で行うよう
役割を分けることで作成コストやメンテナンスコストを下げることができます。
かつ、運用で使っているエクセルファイルがあれば、既存のエクセルをそのまま有効活用することが可能です。
アイディア次第では、エクセル機能も十分に活かしながら、便利な機能を作ることが出来ます。
是非ColdFusionとエクセル機能の組み合わせを試してみて下さい。

ColdFusionの各種情報の配信


最新情報
■2017/6/26
『ColdFusion 実験室』
実験6

■2017/3/27
ColdFusion 2016 対応
インストール セットアップ情報
CFサーバーのインストール
CFビルダーのインストール

■2016/9/20
『ColdFusion 2016 リリース
Enterprise Edition 活用資料』
記事一覧

■2016/3/30
『ColdFusion 実験室』
実験4、実験5

■2015/8/10 〜
『ColdFusion クリニック』
記事一覧(随時更新中)

■2015/4/8
『JasperReportsによる帳票出力』
2. JasperReportsによる帳票出力【後編】

■2015/3/12
アップクロス株式会社
西元 貞昭様
『JasperReportsによる帳票出力』
1. JasperReportsによる帳票出力【前編】


■2015/2/25
『ColdFusionでエクセルを使いこなそう!』
4. 【上級】ColdFusionのエクセル機能を利用したPDF帳票の紹介

ColdFusionトレーニング


ColdFusionユーザーグループ
ColdFusionユーザーグループ
Copyright 2012 Samuraiz Corporation. All Rights Reserved.