2012年4月23日月曜日

[PHP][Excel][PHPExcel] ボーダーをまとめて設定する

PHPExcelの関連サイトを見ると一つのセルに対して上下左右のボーダーにつけるときに

//ClassesをおいたパスからPHPExcel.phpをインクルードする
require_once('Classes/PHPExcel.php');
//書き込むExcelのパス
define('EXCEL','data/test.xls');
//Excelのクラスを作る
$excel=new PHPExcel();
//アクティブなシートを取得する
$sheet=$excel->getActiveSheet();
//シートに名前をつける
$sheet->setTitle('border test');
//A1参照で値を入れる
$sheet->setCellValue('A1','test');
//セルの上に罫線を引く
$sheet->getStyle('A1')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//セルの下に罫線を引く
$sheet->getStyle('A1')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//セルの左に罫線を引く
$sheet->getStyle('A1')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//セルの右に罫線を引く
$sheet->getStyle('A1')->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//.xls形式で書き込むためのクラスを作る
//.xlsx形式を書き込む場合は'Excel5'の部分を'Excel2007'に変える →$writer=PHPExcel_IOFactory::createWriter($excel,'Excel2007');
$writer=PHPExcel_IOFactory::createWriter($excel,'Excel5');
//ファイルに書き込む
$writer->save(EXCEL);

としていることが多い。
もちろんこれでも誤りではないし、きちんとボーダーは設定できるのだが、
いかんせんセル1つならまだしも数が多いと大変である。

実は

//ClassesをおいたパスからPHPExcel.phpをインクルードする
require_once('Classes/PHPExcel.php');
//書き込むExcelのパス
define('EXCEL','data/test.xls');
//Excelのクラスを作る
$excel=new PHPExcel();
//アクティブなシートを取得する
$sheet=$excel->getActiveSheet();
//シートに名前をつける
$sheet->setTitle('border test');
//A1参照で値を入れる
$sheet->setCellValue('A1','test');
//セルの上下左右全てに罫線を引く
$sheet->getStyle('A1')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//.xls形式で書き込むためのクラスを作る
//.xlsx形式を書き込む場合は'Excel5'の部分を'Excel2007'に変える →$writer=PHPExcel_IOFactory::createWriter($excel,'Excel2007');
$writer=PHPExcel_IOFactory::createWriter($excel,'Excel5');
//ファイルに書き込む
$writer->save(EXCEL);

とすることでまとめてボーダーを設定することが出来る。

覚えておいて損はないと思う。

0 件のコメント:

コメントを投稿