Excelファイルの出力

Demo

sample.php

PHP

PHPindex.phpdownload

<?php

	require 'vendor/autoload.php';

	use PhpOffice\PhpSpreadsheet\Spreadsheet;

	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;		//xlsxファイルの出力

	use PhpOffice\PhpSpreadsheet\Style\Border;		//セルの枠線描画

	use PhpOffice\PhpSpreadsheet\Style\Alignment;	//テキストの配置指定(左寄せ, 中央寄せ, 右寄せ)

	/* スプレッドシートを作成 */
	$spreadsheet = new Spreadsheet();

	$sheet = $spreadsheet->getActiveSheet();

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

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

	/* 値とセルを指定 */
	$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', '太線');

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

		['配列の形で値を設定'],

		[NULL, 1, 2],

		[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->setShowGridlines(true);							//true:枠線を表示, false:非表示

	$sheet->getStyle('B15:D15')->getBorders()->getOutline()->setBorderStyle('thin');		//B15からD15まで枠線を表示

	$sheet->getStyle('B18:D20')->getBorders()->getAllborders()->setBorderStyle('thin');	//getAllborders():全て

	$sheet->getStyle('B23:D25')->getBorders()->getInside()->setBorderStyle('thin');		//getInside():内側のみ

	$sheet->getStyle('B28:D30')->getBorders()->getVertical()->setBorderStyle('thin');	//getVertical():縦線のみ

	$sheet->getStyle('B33:D35')->getBorders()->getHorizontal()->setBorderStyle('thin');	//getHorizontal():横線のみ

	$sheet->getStyle('F3')->getBorders()->getOutline()->setBorderStyle('thin');			//thin:通常線

	$sheet->getStyle('F5')->getBorders()->getOutline()->setBorderStyle('thick');			//thick:mediumより太線

	$sheet->getStyle('F7')->getBorders()->getLeft()->setBorderStyle('thin');				//getLeft():左線

	$sheet->getStyle('F9')->getBorders()->getTop()->setBorderStyle('thin');				//getTop():上線

	$sheet->getStyle('F11')->getBorders()->getRight()->setBorderStyle('thin');				//getRight():右線

	$sheet->getStyle('F13')->getBorders()->getBottom()->setBorderStyle('thin');			//getBottom():下線

	$sheet->getStyle('F15')->getBorders()->getOutline()->setBorderStyle('thin')->getColor()->setARGB('ff0000');	//枠線の色を赤に設定

	$sheet->getStyle('F17')->getBorders()->getOutline()->setBorderStyle('dotted');		//dotted:点線

	$sheet->getStyle('F19')->getBorders()->getOutline()->setBorderStyle('dashed');		//dashed:長い点線

	$sheet->getStyle('F21')->getBorders()->getOutline()->setBorderStyle('double');		//double:二重線

	$sheet->getStyle('F23')->getBorders()->getOutline()->setBorderStyle('hair');			//hair:細線

	$sheet->getStyle('F25')->getBorders()->getOutline()->setBorderStyle('medium');		//medium:太線

	/* テキストの配置を設定 */
	$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入力");
	/* -------------------- */

	/* 印刷範囲の設定 */
	$sheet->getPageSetup()->setPrintArea("A1:I42");

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

	header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');	//EXCELファイル( .xlsx OFFICE 2007以降)

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

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

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

	$writer = new Xlsx($spreadsheet);

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