ちょっと前に Pull Request していたんですが、今日マージして頂いたので紹介します。
PhpSpreadsheet を最新にアップデートしてください。
以下がサンプルプログラムです。
<?php
require 'C:/php/php-8.0.2-Win32-vs16-x64/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'こんにちは!');
$sheet->setCellValue('B1', 'Hello!');
$writer = new Csv($spreadsheet);
$writer->setUseBOM(false);
$writer->setOutputEncoding('SJIS-win');
$writer->save('hello.csv');
Writer/Csv に setOutputEncoding と getOutputEncoding メソッドを追加しました。setOutputEncoding で PHP の mb_convert_encoding で指定可能なエンコーディングを指定します。
複数のシートを読み込んでアプリケーションに読み込ませる CSV を作成したりする場合に便利だと思いますよ。