web-dev-qa-db-ja.com

ダウンロードするphpexcel

こんにちは私はphpexcelを初めて使用し、作成したExcelをサーバーに保存せずにクライアントのダウンロードに送信する方法があるのか​​、ダウンロードした直後に削除するのか疑問に思っていました

私は、作成したばかりのExcelでユーザーに「ポップアップ」を提供するページに「エクスポートボタン」を作成しようとしています。

今、私はテーブルを作成した後:

$objXLS->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);

$objXLS->getActiveSheet()->setTitle('Test Stats');

$objXLS->setActiveSheetIndex(0);

$objWriter = PHPExcel_IOFactory::createWriter($objXLS, 'Excel5');
$objWriter->save(__DIR__."/test1.xls");

しかし、それは私のサーバーに保存します

ありがとうございました

75
Dvir Levy

ファイルに保存する代わりに、 php://outputに保存します­ドキュメント

$objWriter->save('php://output');

これにより、ブラウザにそのまま送信されます。

いくつか追加したい ヘッダー­ドキュメント 最初に、ファイルのダウンロードでよくあるように、ブラウザはそのファイルのタイプと名前の付け方(ファイル名)を知っています。

// We'll be outputting an Excel file
header('Content-type: application/vnd.ms-Excel');

// It will be called file.xls
header('Content-Disposition: attachment; filename="file.xls"');

// Write file to the browser
$objWriter->save('php://output');

最初にヘッダーを実行し、次に保存を実行します。 Excelヘッダーについては、次の質問も参照してください。 ExcelドキュメントのMIMEタイプの設定

163
hakre
$Excel = new PHPExcel();
header('Content-Type: application/vnd.ms-Excel');
header('Content-Disposition: attachment;filename="your_name.xls"');
header('Cache-Control: max-age=0');

// Do your stuff here

$writer = PHPExcel_IOFactory::createWriter($Excel, 'Excel5');

// This line will force the file to download
$writer->save('php://output');
22
matino

この呼び出しを使用

$objWriter->save('php://output');

XLSシートを現在のページに出力するには、現在のページに他のエコー、印刷、出力がないことを確認してください。

5
JoshStrange

XLSX使用の場合

SET IN $ xlsName拡張子付きのXLSXからの名前。 例:$ xlsName = 'teste.xlsx';

$objPHPExcel = new PHPExcel();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-Type: application/vnd.ms-Excel');
header('Content-Disposition: attachment;filename="'.$xlsName.'"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');

XLS使用の場合

SET IN $ xlsName拡張子付きのXLSからの名前。 例:$ xlsName = 'teste.xls';

$objPHPExcel = new PHPExcel();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-Excel');
header('Content-Disposition: attachment;filename="'.$xlsName.'"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
5

可能な限り、あなたはすでにあなたの問題を解決しました。

ダウンロードされたすべてのファイルは空の行で始まります。私の場合は4つの空の行で、問題が発生します。 readfile();save('php://output');のどちらを使用しても、スクリプトの先頭にob_start();を追加し、od_end_clean();の直前にreadfile()を追加することで修正できます。またはsave('php://output');

 header('Content-type: application/vnd.ms-Excel');

 header('Content-Disposition: attachment; filename="file.xlsx"');

 header('Cache-Control: max-age=0');

 header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

 header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');

 header ('Cache-Control: cache, must-revalidate');

 header ('Pragma: public');

 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

 $objWriter->save('php://output');
3
harsimer