phpexcel для загрузки - PullRequest
       31

phpexcel для загрузки

75 голосов
/ 19 декабря 2011

Привет, я новичок в 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");

но это сохраняет его на моем сервере

спасибо

Ответы [ 6 ]

162 голосов
/ 19 декабря 2011

Вместо сохранения в файл, сохраните его в 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 см. Также в следующем вопросе: Настройка типа MIME для документа Excel .

22 голосов
/ 19 декабря 2011
$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');
5 голосов
/ 10 декабря 2014

ДЛЯ ИСПОЛЬЗОВАНИЯ 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 голосов
/ 19 декабря 2011

Используйте этот звонок

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

Чтобы вывести лист XLS на страницу, на которой вы находитесь, просто убедитесь, что на странице, на которой вы находитесь, нет других выводов эха, отпечатков.

4 голосов
/ 20 сентября 2013

возможно, вы уже решили свою проблему, во всяком случае, надеюсь, это поможет вам.

все загруженные файлы начинаются с пустой строки, в моем случае четыре пустые строки, и это создает проблему.Независимо от того, работаете ли вы с readfile(); или save('php://output');, это можно исправить, добавив ob_start(); в начале скрипта и od_end_clean(); непосредственно перед readfile();или save('php://output');.

3 голосов
/ 18 июня 2015
 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');
...