PhpSpreadsheetを利用して、テンプレートのエクセルファイルを読み込み、各セルにデータをセットして
出力させるコードを作成しております。
テンプレート上のセルに日付表示の書式(平成○○年○○月○○日(曜日))が設定されたセルがあり、そこに
西暦の日付をセットするようにしましたが、出力されたエクセルファイルを開くと、西暦の日付のままに
なっておりました。(yyyy/mm/dd)
但し書式自体は設定されており、改めて日付を入力すると、書式の通りに表示されます。
テンプレート上に設定されている書式通りに表示させるには、何かコードで記述する必要があるのでしょうか?
ちなみに日付をセットしているセルの書式をセットするコードを、データをセットする前と後ろに入れて
試してみましたが、やはり同じ結果で書式通りの表示となりません。
何か足りないものが御座いましたら、アドバイスをお願いします。
PHP
1<?php 2require_once 'c:\windows\system32\vendor\autoload.php'; 3 4$reader = new PhpOffice\PhpSpreadsheet\Reader\Xlsx(); 5$reader->setIncludeCharts(TRUE); 6$book = $reader->load('template.xlsx'); 7 8$book->setActiveSheetIndex(0); 9$sheet = $book->getActiveSheet(); 10$sheet->getCell('K5')->getStyle()->getNumberFormat()->setFormatCode('"日付:"gggyy"年"mm"月"dd"日("aaa"曜日)"'); 11$sheet->setCellValue('K5', '2018/08/31'); // 日付書式がセットされているセル 12$sheet->getCell('K5')->getStyle()->getNumberFormat()->setFormatCode('"日付:"gggyy"年"mm"月"dd"日("aaa"曜日)"'); 13 14header("Content-Description: File Transfer"); 15header('Content-Disposition: attachment; filename="download.xlsx"'); 16header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 17header('Content-Transfer-Encoding: binary'); 18header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 19header('Expires: 0'); 20ob_end_clean(); 21 22$writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($book); 23$writer->save('php://output'); 24 25?> 26
回答1件
あなたの回答
tips
プレビュー