Excelファイルの出力

Demo

sample.php

PHP

PHPindex.phpdownload

<?php

	require_once 'vendor/autoload.php';

	/* PHPExcelオブジェクトの作成 */
	$spreadsheet = new PHPExcel();

	$sheet = $spreadsheet->getActiveSheet();

	$fileName = "sample.xlsx";			//ファイル名を設定

	$sheet->setTitle("シートタイトル");	//シートタイトル名を設定

	/* プロパティ情報の編集 */
	$spreadsheet->getProperties()

		->setTitle("タイトル")

		->setSubject("件名")

		->setKeywords("タグ")

		->setCategory("分類項目")

		->setDescription("コメント")

		->setCreator("作成者名")

		->setLastModifiedBy("前回保存者名")

		->setCompany('会社名')

		->setManager('マネージャー名')

		->setCreated(strtotime('2020-01-02 03:04:05'))	//コンテンツの作成日時

		->setModified(strtotime('2020-02-03 04:05:06'));//前回保存日時

	/* 値とセルを指定 */
	$sheet->setCellValue('A1', '↑A列:幅14');

	$sheet->setCellValue('A2', '←2行:高さ27');

	$sheet->setCellValue('B1', 'テキスト');

	$sheet->setCellValue('B3', '左寄せ');

	$sheet->setCellValue('B5', '上寄せ');

	$sheet->setCellValue('B7', 'テキストの折り返し');

	$sheet->setCellValue('B13', 'セル(B13,C13,D13)の結合');

	$sheet->setCellValue('B15', 'B15からD15まで枠線を表示');

	$sheet->setCellValue('B17', '枠線全て');

	$sheet->setCellValue('B22', '内側のみ');

	$sheet->setCellValue('B27', '縦線のみ');

	$sheet->setCellValue('B32', '横線のみ');

	$sheet->setCellValue('C1', '文字色');

	$sheet->setCellValue('C3', '中央(横)');

	$sheet->setCellValue('C5', '中央(縦)');

	$sheet->setCellValue('D1', '背景色');

	$sheet->setCellValue('D3', '右寄せ');

	$sheet->setCellValue('D5', '下寄せ');

	$sheet->setCellValue('E1', '文字サイズ');

	$sheet->setCellValue('F3', '枠線(細)');

	$sheet->setCellValue('F5', '枠線(太)');

	$sheet->setCellValue('F7', '左線');

	$sheet->setCellValue('F9', '上線');

	$sheet->setCellValue('F11', '右線');

	$sheet->setCellValue('F13', '下線');

	$sheet->setCellValue('F15', '枠線赤');

	$sheet->setCellValue('F17', '点線');

	$sheet->setCellValue('F19', '長い点線');

	$sheet->setCellValue('F21', '二重線');

	$sheet->setCellValue('F23', '細線');

	$sheet->setCellValue('F25', '太線');

	$sheet->setCellValue('F27', '配列で指定');

	/* 配列の形で値を設定 */
	$dataList = array(

		array('配列の形で値を設定'),

		array(NULL, 1, 2),

		array(3, 4, 5),
	);

	$sheet->fromArray($dataList, NULL, 'B9', true);	//指定したセル(B9)を起点に値を挿入する

	/* 列の横幅を設定 */
	$sheet->getColumnDimension('A')->setWidth(14);			//列(A)の幅を14に設定

	$sheet->getColumnDimension('A')->setAutosize(false);	//true:列(A)の幅を自動調整, false:自動調整しない

	/* 行の縦幅を設定 */
	$sheet->getRowDimension('2')->setRowHeight(27);		//行(2)の高さを27に設定

	/* 枠線を設定 */
	$sheet->getStyle('B15:D15')->applyFromArray(array('borders' => array('outline' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));		//B15からD15まで外枠線を表示

	$sheet->getStyle('B18:D20')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));	//allborders:全て

	$sheet->getStyle('B23:D25')->applyFromArray(array('borders' => array('inside' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));		//inside:内側のみ

	$sheet->getStyle('B28:D30')->applyFromArray(array('borders' => array('vertical' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));	//vertical:縦線のみ

	$sheet->getStyle('B33:D35')->applyFromArray(array('borders' => array('horizontal' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));	//vertical:横線のみ

	$sheet->getStyle('F3')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));		//BORDER_THIN:通常線

	$sheet->getStyle('F5')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THICK))));		//BORDER_THICK:BORDER_MEDIUMより太線

	$sheet->getStyle('F7')->applyFromArray(array('borders' => array('left' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));				//left:左線

	$sheet->getStyle('F9')->applyFromArray(array('borders' => array('top' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));				//top:上線

	$sheet->getStyle('F11')->applyFromArray(array('borders' => array('right' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));			//right:右線

	$sheet->getStyle('F13')->applyFromArray(array('borders' => array('bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN))));			//bottom:下線

	$sheet->getStyle('F15')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('rgb' => 'ff0000')))));	//枠線の色を赤に設定

	$sheet->getStyle('F17')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_DOTTED))));	//BORDER_DOTTED:点線

	$sheet->getStyle('F19')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_DASHED))));	//BORDER_DASHED:長い点線

	$sheet->getStyle('F21')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_DOUBLE))));	//BORDER_DOUBLE:二重線

	$sheet->getStyle('F23')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_HAIR))));		//BORDER_HAIR:細線

	$sheet->getStyle('F25')->applyFromArray(array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM))));	//BORDER_MEDIUM:太線

	$borderStyle = array(

		'borders' => array(

			'top'     => array('style' => PHPExcel_Style_Border::BORDER_THIN),

			'right' => array('style' => PHPExcel_Style_Border::BORDER_THIN),

			'left' => array('style' => PHPExcel_Style_Border::BORDER_THIN),

			'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN)
		)
	);

	$sheet->getStyle('F27')->applyFromArray($borderStyle);			//配列で指定

	/* テキストの配置を設定 */
	$sheet->getStyle('B3')->getAlignment()->setHorizontal('left');	//left:左寄せ

	$sheet->getStyle('B5')->getAlignment()->setVertical('top');		//top:上寄せ

	$sheet->getStyle('C3')->getAlignment()->setHorizontal('center');//center:中央寄せ(横)

	$sheet->getStyle('C5')->getAlignment()->setVertical('center');	//top:中央寄せ(縦)

	$sheet->getStyle('D3')->getAlignment()->setHorizontal('right');	//right:右寄せ

	$sheet->getStyle('D5')->getAlignment()->setVertical('bottom');	//top:下寄せ

	/* テキストの折り返しを設定 */
	$sheet->getStyle('B7')->getAlignment()->setWrapText(true);

	/* セルを連結 */
	$sheet->mergeCells('B13:D13');

	/* 文字色を設定 */
	$sheet->getStyle('C1')->getFont()->getColor()->setARGB('ff0000');	//C1セルの文字色を赤に設定

	/* 背景色を設定 */
	$sheet->getStyle('D1')->getFill()->setFillType('solid')->getStartColor()->setARGB('00ffff');	//D1セルの背景色を水色に設定

	/* 文字サイズを設定 */
	$sheet->getStyle('E1')->getFont()->setSize(18);	//E1セルの文字サイズを18に設定

	/* 改行のある文字を入力 */
	$sheet->getStyle('C7')->getAlignment()->setWrapText(true);	//setWrapTextをtrueにした後に、setCellValueで値をセット。

	$sheet->setCellValue('C7', "改行の\nある文字を\n入力");
	/* -------------------- */

	/* Excelファイルのダウンロード */
	header("Content-Description: File Transfer");

	header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');	//vnd.openxmlformats-officedocument.spreadsheetml.sheet:EXCELファイル( .xlsx OFFICE 2007以降), vnd.ms-excel:EXCELファイル( .xls OFFICE 2007より過去)

	header('Content-Disposition: attachment; filename="'.$fileName.'"');	//ダウンロード時のファイル名をセット

	header('Cache-Control: no-store, max-age=0');	//新しいリソースのキャッシュを防止、キャッシュのクリア

	ob_end_clean();	//バッファ消去

	$writer = PHPExcel_IOFactory::createWriter($spreadsheet, 'Excel2007');	//Excel5:Excel97~2003, Excel2007:Excel2007~

	$writer->save('php://output');
?>
© 2025 wayday