web-dev-qa-db-ja.com

PhpExcelを使用してExcelスプレッドシートを変数に書き込むにはどうすればよいですか?

PHPExcelオブジェクトにデータをロードした後、ファイルに書き込むのではなく、コンテンツをphp変数に直接出力したいと思います。保存する唯一の方法はディスクに保存することであるように思われるので、私はそれを行う方法を逃したことがありますか。

27
Aaron

ライターを使用してディスクに保存するか、php:// outputに保存できます。後者の場合、出力バッファリングを使用してその出力をキャプチャし、変数に格納することができます。ただし、なぜこれを実行するのかはよくわかりません。

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_start();
$objWriter->save('php://output');
$excelOutput = ob_get_clean();
49
Mark Baker

PHPExcelはどのような場合でもファイルをディスクに書き込むため、stdoutをキャプチャすると、内部で発生するのは、ファイルがディスクに書き込まれ、ディスクから読み取られ(そして削除され)、stdoutに出力されてから、出力バッファにキャプチャされることです。 。

あなたもそうするかもしれません:

$tmpfile = tempnam($tmp_dir, 'phpxltmp');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($tmpfile);

$excelOutput = file_get_contents($tmpfile);
unlink($tmpfile);
0
Arno Schäfer