今回は、
テンプレートを使用したエクセル出力の方法を紹介します。
例えば、
以下の様なテンプレートが存在していたとします。
このテンプレートの書き換えが必要なセルのみ変更してやれば、
項目名など変更が入らない部分のテキスト出力処理は行ってやる必要は有りません。
その際のサンプルコードは以下の様になります。
require_once "Classes/PHPExcel.php";
require_once "Classes/PHPExcel/IOFactory.php";
//パスは必要に応じて変更してください
//オブジェクトを生成
$excel = new PHPExcel();
//テンプレートの読み込み
$reader = PHPExcel_IOFactory::createReader("Excel2007");
$excel = $reader->load("template.xlsx");
//シートの設定
$excel->setActiveSheetIndex(0);
$sheet = $excel->getActiveSheet();
//物件名
$bukken_name = "新橋ハイツ";
$sheet->setCellValue("C4", $bukken_name);
//住所
$address = "東京都港区新橋3丁目";
$sheet->getStyle("CS4")->getFont()->setSize(10); //文字サイズ設定
$sheet->setCellValue("CS4", $address); //テキスト出力
//交通
$access = "JR山手線『新橋駅』 徒歩10分";
$sheet->getStyle("CS10")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS16")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS10", $access); //テキスト出力
//賃料
$rent = "9万円";
$sheet->getStyle("CS16")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS16")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS16", $rent); //テキスト出力
//管理費
$costs = "0.5万円";
$sheet->getStyle("DY16")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY16")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY16", $costs); //テキスト出力
//敷金
$sikikin = "1ヶ月";
$sheet->getStyle("CS22")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS22")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS22", $sikikin); //テキスト出力
//礼金
$reikin = "1ヶ月";
$sheet->getStyle("DY22")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY22")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY22", $reikin); //テキスト出力
//仲介手数料
$chukai = "1.05ヶ月";
$sheet->getStyle("CS28")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS28")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS28", $chukai); //テキスト出力
//更新料
$kosin = "1.05ヶ月";
$sheet->getStyle("DY28")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY28")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY28", $kosin); //テキスト出力
//間取り
$madori = "2DK";
$sheet->getStyle("CS34")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS34")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS34", $madori);
//専有面積
$area = "35㎡";
$sheet->getStyle("DY34")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY34")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY34", $area); //テキスト出力
//物件タイプ
$type = "マンション";
$sheet->getStyle("CS40")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS40")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS40", $type); //テキスト出力
//構造
$structure = "鉄筋コンクリート";
$sheet->getStyle("DY40")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY40")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY40", $structure); //テキスト出力
//築年月
$bulding_date = "2013年1月(新築)";
$sheet->getStyle("CS46")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS46")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS46", $bulding_date); //テキスト出力
//入居日
$move = "2013年10月下旬";
$sheet->getStyle("DY46")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY46")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY46", $move); //テキスト出力
//駐車場
$parking = "あり(2万円/月)";
$sheet->getStyle("CS52")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS52")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS52", $parking); //テキスト出力
//損保
$sonpo = "あり(1.9万円/2年)";
$sheet->getStyle("DY52")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("DY52")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("DY52", $sonpo); //テキスト出力
//設備
$setsubi = "バス・トイレ別 / フローリング / エアコン / 追い炊き / ペット相談可";
$sheet->getStyle("CS58")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS58")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS58", $setsubi); //テキスト出力
//備考
$note = "別途クリーニング代(20,000円)掛ります。";
$sheet->getStyle("CS70")->getFont()->setSize(10); //文字サイズ設定
$sheet->getStyle("CS70")->getFont()->setBold(false); //文字の太さ設定
$sheet->setCellValue("CS70", $note); //テキスト出力
//画像出力
//画像の保存元ディレクトリ
$img = "sample.jpg";
///画像用のオプジェクト作成
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setPath($img);///貼り付ける画像のパスを指定
$objDrawing->setWidthAndHeight("500", "500");////画像の高さを指定
///画像のプロパティを見たときに表示される情報を設定
$objDrawing->setCoordinates("C15");///位置
$objDrawing->setOffsetX(6);////横方向へ何ピクセルずらすかを指定
$objDrawing->setOffsetY(3);////横方向へ何ピクセルずらすかを指定
$objDrawing->getShadow()->setVisible(true);////ドロップシャドウをつけるかどうか。
///PHPExcelオブジェクトに張り込み
$objDrawing->setWorksheet($excel->getActiveSheet());
/*******印刷設定******/
//用紙の方向(横長)
$sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
//用紙のサイズ(A4)
$sheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5);
//印刷の中央配置
$sheet->getPageSetup()->setHorizontalCentered(true);
$sheet->getPageSetup()->setVerticalCentered(false);
//出力するファイル名
$filename = "sample.xlsx";
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"".$filename."\"");
header('Cache-Control: max-age=0');
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
$writer->save("php://output");
出力結果は以下のようになります。
物件検索システムなどでは物件データをデータベースから引っ張ってきて、
必要な部分のみを動的に変化させることが多いので、
テンプレートのエクセルファイルを使用した方が便利です。
この記事へのコメントはありません。