Phpexcel для загрузки
Привет, я новичок в 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");
но это сохраняет его на моем сервере
Благодарю вас
Ответы
Ответ 1
Вместо сохранения его в файл сохраните его php://output
& shy; Docs:
$objWriter->save('php://output');
Это отправит AS-IS в браузер.
Вы хотите сначала добавить заголовки & shy; 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.
Ответ 2
$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');
Ответ 3
Использовать этот вызов
$objWriter->save('php://output');
Чтобы вывести лист XLS на страницу, на которой вы находитесь, просто убедитесь, что страница, на которой вы находитесь, не имеет других выходов эха, печати.
Ответ 4
ДЛЯ ИСПОЛЬЗОВАНИЯ 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
Возможно, вы уже решили свою проблему, я надеюсь, что это поможет вам.
все загруженные файлы начинаются с пустой строки, в моем случае, когда четыре пустых
линий, и это создает проблему. Независимо от того, работаете ли вы с readfile();
или
save('php://output');
. Это можно исправить добавлением ob_start();
на
начало script и od_end_clean();
непосредственно перед readfile()
; или
save('php://output');
.
Ответ 6
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');