見出し画像

PhpSpreadsheetを利用して、Excel=>CSV変換

業務をしている際に、Excel=>CSVに変換するシステムを作る必要があったので、今回は備忘録として記述していきたいと思います。

<?php
require "./vendor/autoload.php"; // vendor内のautoload.phpをインポートする必要がある
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Csv;

$objSpreadsheet = IOFactory::load('./test.xlsx');// Excelファイルの読み込み
$objWriter = new Csv($objSpreadsheet);
$objWriter->setDelimiter(',');
$objWriter->setEnclosure('"');
$objWriter->setLineEnding("\r\n");
$objWriter->setUseBOM(true); // 符号化したテキストの先頭につける数バイトのデータ
$objWriter->setSheetIndex(0);
$objWriter->save("test.csv");
exit();
?>

BOMをつけたくない場合は、次のようになります。

<?php
require "./vendor/autoload.php"; // vendor内のautoload.phpをインポートする必要がある
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Csv;

$objSpreadsheet = IOFactory::load('./test.xlsx');// Excelファイルの読み込み
$objWriter = new Csv($objSpreadsheet);
$objWriter->setDelimiter(',');
$objWriter->setEnclosure('"');
$objWriter->setLineEnding("\r\n");
$objWriter->setUseBOM(false); // falseでBOMを無効にする。 *そもそも必要ないかもしれない
$objWriter->setOutputEncoding('SJIS-WIN');// 文字化けを防ぐため、文字コード「SJIS-WIN」を指定する
$objWriter->setSheetIndex(0);
$objWriter->save("test.csv");
exit();
?>

参考サイトは以下になります。

以上です。

最後まで読んでいただきありがとうございました。
参考になれば幸いです。

この記事が気に入ったらサポートをしてみませんか?