こんにちは私は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");
しかし、それは私のサーバーに保存します
ありがとうございました
ファイルに保存する代わりに、 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タイプの設定 。
$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');
この呼び出しを使用
$objWriter->save('php://output');
XLSシートを現在のページに出力するには、現在のページに他のエコー、印刷、出力がないことを確認してください。
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');
可能な限り、あなたはすでにあなたの問題を解決しました。
ダウンロードされたすべてのファイルは空の行で始まります。私の場合は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');