« Excelファイルの書き出し1 | トップページ | Google Mapsを使ってみよう1 »

2005年11月03日

Excelファイルの書き出し2

前回に続いて、MicrosoftのExcelファイルをPHPのPEARを使って自動作成するスクリプトを紹介します。
前回は、各セルの中に文字列を挿入するだけの基本的なものでした。今回はセルに合わせて線を引いたり文字の大きさを変えたりしてみます。
尚、PEARとSpreadsheet_Excel_Writerのインストール等と本家PEARサイトをご参照下さい。

PEAR本家サイト

前回の「Excelファイルの書き出し1」のページへ。

PEARのSpreadsheet_Excel_Writerを呼び出して、オブジェクトを変数に格納しファイル名を指定、更にExcelシート名を指定します。

$excel = new Spreadsheet_Excel_Writer();
$excel->send("test.xls");
$sheet = $excel->addWorksheet("myTest");

ここまでは前回を全く同じです。
シートの準備まで終わったら次のように配列(ハッシュ)を作ります。
尚、変数名は何でも構いません。
$propertiesTitle["Size"] = 12;
$propertiesTitle["Bold"] = 700;
$propertiesTitle["Border"] = 1;

配列(ハッシュ)の作成が終わったら次のように$excelオブジェクトからaddFormatメソッドを呼び出し、引数に先程作成した配列(ハッシュ)を指定します。
返ってきたオブジェクト(フォーマット)を変数に格納します。
$formatTitle = $excel->addFormat($propertiesTitle);

object addFormat([array $properties=array()])
$properties:フォーマットを格納してる配列(ハッシュ)
return:フォーマットオブジェクト

第1引数の配列(ハッシュ)には、「Bold(文字の太さ)」「Size(文字の大きさ)」「Border(枠線の太さ)」など色々な種類があります。興味のある方は本家PEARサイトで調べてみてください。
上記の要領でフォーマットを必要な分制作します。

次に前回と同じようにwriteメソッドを使ってセルの中に文字列を挿入します。

$sheet->write(0, 0, mb_convert_encoding("メンバー名", "SJIS", "auto"), $formatTitle);

前回と少し違う部分があります。前回は第3引数までの指定だったのに今回は第4引数を指定してます。
第4引数にフォーマットをセットすることで、初めて文字サイズを変更したり文字の太さを調整することが出来ます。
今まで紹介してきたスクリプトのサンプルは以下の通りです。
/***
* Excel用データダウンロードテスト2
*/
require_once("Spreadsheet/Excel/Writer.php");

$excel = new Spreadsheet_Excel_Writer();
$excel->send("test.xls");

$sheet = $excel->addWorksheet("myTest");

$propertiesTitle["Size"] = 12;
$propertiesTitle["Bold"] = 700;
$propertiesTitle["Border"] = 1;
$formatTitle = $excel->addFormat($propertiesTitle);

$propertiesData["Border"] = 1;
$formatData = $excel->addFormat($propertiesData);

$sheet->write(0, 0, mb_convert_encoding("メンバー名", "SJIS", "auto"), $formatTitle);
$sheet->write(0, 1, mb_convert_encoding("職業", "SJIS", "auto"), $formatTitle);
$sheet->write(1, 0, mb_convert_encoding("ピヨヒコ", "SJIS", "auto"), $formatData);
$sheet->write(1, 1, mb_convert_encoding("WEBプログラマー", "SJIS", "auto"), $formatData);
$sheet->write(2, 0, mb_convert_encoding("テスト太郎", "SJIS", "auto"), $formatData);
$sheet->write(2, 1, mb_convert_encoding("WEBデザイナー", "SJIS", "auto"), $formatData);

$excel->close();


上記のスクリプトの実行結果は以下の通りです。
Excelファイルをダウンロードする

addFormatメソッドについて
上記以外に以下のようなやり方もあるみたいです。

$formatTitle = $excel->addFormat();
$formatTitle->setBorder(1);
$formatTitle->setBold();
$formatTitle->setSize(12);

addFormatメソッドから返ってきた値を変数に格納して、その後に文字サイズを変更するやり方です。
ただ、私が実験してみたところなぜかうまく動きませんでした。。。
後は、配列で指定するやり方も駄目だったのですが文字の色や背景色も変えられませんでした^^;
うーん、、、何処間違えてるんだろ。。。?それともまだ安定してないのかなぁ。。。
その辺も調査してみます。分かり次第またエントリーします^^

もし情報がありましたらご連絡をお待ちしておりますm(_ _)m

トラックバック

このエントリーのトラックバックURL:
http://www.s-memo.net/mt/mt-tb.cgi/8

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)