phpでExcelを読み書きする時は、PhpSpreadsheetが便利です。
公式ドキュメントは、こちら↓
https://phpspreadsheet.readthedocs.io/en/develop/
#書き込む
##1. 新規ファイルに書き込む
// ①シートの新規作成
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// ②シートへの書き込み 配列を、指定セルから描写することもできます。
$header = [ … ];
$sheet->fromArray($header, null, 'A1');
// ③スタイルの定義 配列で色や文字フォントを指定します。
$styleArray = [
'alignment' => [
'vertical' => Alignment::VERTICAL_CENTER,
'wrapText' => true
];
$sheet->getStyle($styleRange)->applyFromArray($styleArray);
// ④ファイルセーブ サーバの指定フォルダに保存することもできますし、
// 保存先に 'php://output' を指定しヘッダを追加するとクライアント端末へ送信しダウンロードダイアログを表示させます。
header('Content-Disposition: attachment; filename=' . mb_convert_encoding('案件一覧.xlsx', 'SJIS-win', 'UTF-8'));
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$writer = IOFactory::createWriter($spreadSheet, 'Xlsx');
$writer->save('php://output');
##2. テンプレートファイルを使って書き込む
あらかじめサーバに配置したテンプレートを読み込んで、ファイルを作ることもできます。
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->getCell('A1')->setValue('John');
$worksheet->getCell('A2')->setValue('Smith');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('write.xls');