忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP Spoutを使用してCSVファイル及び、ODSファイル出力を行う方法について

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ファイルへの書込みを行う処理を示します。


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ファイルはエクセルソフトでオープンできます)












PR

コメント

コメントを書く