привет я новичок в phpexcel, и мне было интересно, если есть какой-то способ отправить 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
Docs :
$objWriter->save('php://output');
Это отправит AS-IS в браузер.
Вы хотите сначала добавить некоторые заголовки Docs , как это обычно бывает при загрузке файлов, поэтому браузер знает, какой тип этого файла и как его следует назвать (имя файла):
// 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 также рассматривается следующий вопрос: Установка типа mime для документа excel .
$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 name из 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 name из 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');
возможно, вы уже решили свою проблему, так или иначе я надеюсь, что это поможет вам.
все загруженные файлы начинаются с пустой строки, в моем случае, где четыре пустые строки, и это создает проблему. Независимо от того, работаете ли вы с 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 MYH:i:s').' GMT'); header ('Cache-Control: cache, must-revalidate'); header ('Pragma: public'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');