Spout のインストール記事での簡単例としてエクセルファイル(XLSXファイル)への出力を記しました。
Spout にはXLSXファイルのみならず、CSVファイル、ODSファイルへの出力も可能で、 XLSXファイルの場合とまったく同じ形式で処理できます。
上記3種類のファイルの処理クラスを各タイプごとのものを、処理の先頭で宣言してやります。
その後のデータ処理はほぼ同じものになります。
先ずは前回の例のソースを以下に記します。
■XLSXファイルの書込み例
<?php
// ライブラリ読込
require '../vendor/autoload.php';
// 利用クラスエイリアス
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
// XLSX書込クラス生成
$writer = WriterEntityFactory::createXLSXWriter();
// 書込みファイル指定
$writer->openToFile('test.xlsx');
// セルデータ
$cells = [
WriterEntityFactory::createCell('A001'),
WriterEntityFactory::createCell('B002'),
WriterEntityFactory::createCell('C003'),
];
// 行データ
$singleRow = WriterEntityFactory::createRow($cells);
// 行データを3行追加
$writer->addRow($singleRow);
$writer->addRow($singleRow);
$writer->addRow($singleRow);
// エクセルファイルの書込
$writer->close();
?>
■CSVファイルの書込み例
以下のソースから分かる様に、XLSX書込クラス生成 WriterEntityFactory::createXLSXWriter() が WriterEntityFactory::createCSVWriter() に変わり、ファイル名の拡張子が CSV 用になっています。
<?php
// ライブラリ読込
require '../vendor/autoload.php';
// 利用クラスエイリアス
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
// CSV書込クラス生成
$writer = WriterEntityFactory::createCSVWriter();
// 書込みファイル指定
$writer->openToFile('test.csv');
// セルデータ
$cells = [
WriterEntityFactory::createCell('A001'),
WriterEntityFactory::createCell('B002'),
WriterEntityFactory::createCell('C003'),
];
// 行データ
$singleRow = WriterEntityFactory::createRow($cells);
// 行データを3行追加
$writer->addRow($singleRow);
$writer->addRow($singleRow);
$writer->addRow($singleRow);
// エクセルファイルの書込
$writer->close();
?>
出力されたCSVファイルをエディタ(秀丸ですが)で見てみると以下の様になります。
■ODSファイルの書込み例
以下のソースから分かる様に、XLSX書込クラス生成 WriterEntityFactory::createXLSXWriter() が WriterEntityFactory::createODSWriter() に変わり、ファイル名の拡張子が ODS 用になっています。
ちなみに ODSファイル とは、 「表計算ソフトなどで作成・編集されるワークシートの標準ファイル形式の一つで、 Apache OpenOffice(旧OpenOffice.org)やLibreOfficeなどのオープンソースのオフィスソフトが既定のファイル形式として採用している。」 標準のファイル拡張子は「.ods」。
(『IT用語辞典 e-Words』より)
<?php
// ライブラリ読込
require '../vendor/autoload.php';
// 利用クラスエイリアス
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
// ODS書込クラス生成
$writer = WriterEntityFactory::createODSWriter();
// 書込みファイル指定
$writer->openToFile('test.ods');
// セルデータ
$cells = [
WriterEntityFactory::createCell('A001'),
WriterEntityFactory::createCell('B002'),
WriterEntityFactory::createCell('C003'),
];
// 行データ
$singleRow = WriterEntityFactory::createRow($cells);
// 行データを3行追加
$writer->addRow($singleRow);
$writer->addRow($singleRow);
$writer->addRow($singleRow);
// エクセルファイルの書込
$writer->close();
?>
出力されたODSファイルを見てみると以下の様になります。 (ODSファイルはエクセルソフトでオープンできます)
コメント