もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

phpSpreadsheetでセルの書式にユーザー定義を適用する

はじめに

こんばんは。

phpSpreadsheetでファイルを作成する際に、日付のセルを(YYYY-MM-DD)の形式で登録したい場合があったので、簡単ですが残しておきます。

何も設定しない場合は、以下みたいに YYYY/MM/DD の形でフォーマットされます。

gyazo.com

これを YYYY-MM-DD で入力できるようにしてみました。

github.com

本題

<?php

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet       = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', '会社名');
$sheet->setCellValue('C1', '電話番号');
$sheet->setCellValue('D1', '設立日');
$sheet->getStyle('D')->getNumberFormat()
    ->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDD);

header('Content-Disposition: attachment; filename="download.xlsx"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');

gyazo.com

これで フォーマットが YYYY-MM-DD になりました。

終わりに

ほかの書式も設定できそうなので、今度試してみます。 簡単ですが以上です。