Demo
sample.php
PHP
<?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');
?>