セルの書式設定

Share on Facebook
はてなブックマーク - セルの書式設定
このエントリーをはてなブックマークに追加

Excel_Reviserではテンプレートの書式をそのまま継承しますので見た目はそれな
りの出力結果が得られるはずです。でも、出力する値や量に応じてセルの色や罫線
などの書式を動的に変更したい時が有ります。
 しかし、Excel_ReviserではSpreadsheet_Excel_Writerのようなきめ細かく
直接セルの書式を設定するメソッドやプロパティは用意していません。

では、どのようにしてセルの書式を設定するかをここで説明します

と、その前にExcel_Reviser内部での関連部分の処理方法の概要を説明しておきます。
reviser.php内では以下の手順で処理しています

  1. EXCELのテンプレートを読み込む時、どのセルにどのような書式が設定されているかを解析し内部の配列に記憶する。
  2. ユーザが指定していたセルの内容に書換える際に、そのセルの書式は上記で解析したセルのどれを使用するか選択し決定します。デフォルトは同じセルの書式を利用します。
  3. 最後にEXCELファイルとして組み立てて出力する

上記の処理をしていますので、使いたい書式はすべてテンプレート内の何れかのセルに事前に設定しておく必要があります

次に、2の部分でどのようにしてセルの書式を選択させるかを説明します。

セルの書式は基本的にセルへの書込み指定と同時に指定します。
書式が設定できる書込みには、以下のメソッドが用意して有ります。

addString($sheet,$row,$col,$str,$refrow,$refcol,$refsheet)
addNumber($sheet,$row,$col,$num,$refrow,$refcol,$refsheet)
addHLink(($sheet,$row,$col,$str,$link,$refrow,$refcol,$refsheet)
addBlank($sheet,$row, $col, $refrow, $refcol, $refsheet)

各メソッドの主機能は同梱のREADME_EUC.txtを参照してください。注目してほ
しいのは赤文字の部分です。
 この赤色の部分で、どのシート($refsheet)のどのセル($refrow,$refcol)と同
じ書式を採用するかを指定します。この赤色部分はオプション設定(除addBlank)
になっており、設定が無い場合は$sheet,$row,$col で指定されたセルの書式を
そのまま利用します。
 ちなみに、addBlankは書式設定専用のメソッドです。これは体裁を整えるために
文字や数値を書き込まないが罫線やセル色等の設定をしたい時に使用します。注
意しなければならないのは、他の書式指定が可能なメソッドと同じセルに対して指
定はできません。

ここまで読むと、
色々な書式をテンプレート上に準備しておくと出力時に不要な書式のセルが大量に残ってしまい見た目が悪くなるではないか
と考える人が居るかもしれませんが、心配は要りません。

そのためにrmCell、rmSheet のメソッドを用意しています。
  ・rmCellは、テンプレートから不要なセルを削除するメソッドです
  ・rmSheetは、テンプレートから不要なシートを削除するメソッドです。
これらのメソッドを利用して書式参照用に用意した不要なセル(またはシート)は削
除してしまえばよい事になります。

以上整理すると、ユーザは下記手順で処理することなります。

  1. テンプレート上に本来出力する帳票テンプレート以外に、使用する可能性が有る書式を設定済みのセルをどこかに準備しておきます(専用シートの準備を推奨)
  2. Excel_Reviserでセルに書きこむときにその内容に応じて書式を参照するセルを指定します。
  3. 各セルへの書込み設定が全て終わったら不要になった書式参照用セル(シート)を削除します。
  4. 最後にファイル出力を指定します

具体的なサンプルを準備しましたので、内容を確認してみてください。

サンプルファイルはこちらの 書式設定サンプル

サンプルの概要
乱数で5教科の点数を発生させ、合計が400以上ならセルの色を赤にして「合格」表示
行数も乱数で発生させていますので、行末の書式を動的に変更する例にもなっています。


    

 前ページ

(コメント オフ)