PHPExcel

Last-modified: 2015-06-12 (金) 15:36:49

http://mizyupon-rpg.com/posts/719.html

途中!!!

とりあえず作法

include_once ( dirname(__FILE__) . '/Classes/PHPExcel.php');
include_once ( dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php');


$excel = new PHPExcel();

$reader = PHPExcel_IOFactory::createReader('Excel2007');
$excel = $reader->load(dirname(__FILE__) . '/template.xls');

$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save(ファイルパス);

header('Content-Type: application/octet-stream');
header("Content-Disposition:attachment;filename=\"".$filename."\"");
header("Content-Length:".filesize($file_path));//ダウンロードするファイルのサイズ
ob_end_clean();//ファイル破損エラー防止
$writer = PHPExcel_IOFactory::createWriter($book, 'Excel2007');
$writer->setIncludeCharts(TRUE); // ポイント!
$writer->save('php://output');

シートの設定

$excel->setActiveSheetIndex(0);//何番目のシートに有効にするか
$sheet = $excel->getActiveSheet();//有効になっているシートを取得
$sheet = setTitle('シート名');//シート名を設定します。

$excel->getSheetCount();//シートの数を返す。
$excel->getSheetNames();//シートタブの順序に応じてブック内のシートリストを返す。
$excel->getSheet();//シートタブの順番でシートにアクセス。1番目のシートは"0"から
$excel->getSheetByName();//シートタブの名前でシートにアクセス。
$excel->createSheet();//シートを新規追加する
$myWorkSheet = new PHPExcel_Worksheet($objPHPExcel, 'My Data');
$objPHPExcel->addSheet($myWorkSheet, 0);

$objClonedWorksheet = clone $objPHPExcel->getSheetByName('sheet1');
$objClonedWorksheet->setTitle('コピーsheet1');
$objPHPExcel->addSheet($objClonedWorksheet);

$objClonedWorksheet = clone $objPHPExcel1->getSheetByName('sheet1');
$objPHPExcel->addExternalSheet($objClonedWorksheet);

$sheetIndex = $excel->getIndex($objPHPExcel-> getSheetByName('Worksheet 1'));//指定したシートの順序を取得
$excel->removeSheetByIndex($sheetIndex);//指定したシートの順序からシートを削除

値の入力

$sheet->setCellValue('A1' , 'こんにちは');

$sheet->setCellValueByColumnAndRow(0 , 1, 'こんにちは' ); // 列、行

画像の貼り付け

$objDrawing = new PHPExcel_Worksheet_Drawing();//画像用のオプジェクト作成
$objDrawing->setPath('ファイルのパス');//貼り付ける画像のパスを指定
$objDrawing->setHeight(数値);//画像の高さを指定
$objDrawing->setWidth(数値);//画像の高さを指定
$objDrawing->setResizeProportional(false);//縦横比の変更なし
$objDrawing->setCoordinates('セル名');//位置
$objDrawing->setOffsetX(数値);//指定した位置からどれだけ横方向にずらすか。
$objDrawing->setWorksheet($sheet);

セルの結合

$sheet->mergeCells('A1:A10');

$sheet->mergeCellsByColumnAndRow(0,1,9,1);

セルの書式設定

$sheet->getStyle('セル名')->各種設定; // 単一セル指定
$sheet->getStyle('セル名:セル名')->各種設定;//セル範囲指定
$sheet->getStyleByColumnAndRow(列,行)->各種設定; // 座標

ただし、値の入力のように座標での範囲指定はできませんでした。
座標指定で範囲を指定する場合は、座標をセル名に置き換えてくれるstringFromColumnIndexメソッドを使用する必要があります。
$cell_range = PHPExcel_Cell::stringFromColumnIndex(開始セルの列座標) . '開始セルの行座標:'
.PHPExcel_Cell::stringFromColumnIndex(終了セルの列座標) . '終了セルの行座標';
$sheet->getStyle($cell_range)->各種設定;

$colWidth = $objPHPExcel->getActiveSheet()->getColumnDimension("A")->getWidth();