表題のとおりなのですが、
PhpSpreadsheetを使い新規でCSVを生成し、ダウンロードさせる際、
Excelで開いても文字化けしないSJISのCSVを作りたいと思っています。
使用しているExcelはfor Mac 2011のVersion 14.6.5。
しかしながら、どうしてもUTF8のCSVファイルしか生成されず、Excelでそのファイルを開くと日本語が文字化けしてしまいます。
PhpSpreadsheetを使ったSJISのCSVの作成方法をご存知でしたらご教示ください。
現状のコードは下記のとおりです。
$spreadsheet = new Spreadsheet(); $writer = new CsvWriter($spreadsheet); $sheet = $spreadsheet->getSheet(0); $data = [ ["あああ", "aaa"], ["いいい", "iii"], ["ううう", "uuu"], ["えええ", "eee"], ["おおお", "ooo"], ]; header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename='text.csv'"); ob_end_clean(); $i = 0; $encodedData = []; foreach ($data as $row) { foreach ($row as $value) { $encodedData[$i][] = mb_convert_encoding($value, "SJIS", "UTF-8"); } $i++; } $sheet->fromArray($encodedData, null, 'A1', true); $this->writer->save('php://output');
現状の出力(日本語部分が空)
A | B |
---|---|
aaa | |
iii | |
uuu | |
eee | |
ooo |