witam, jestem nowy w phpexcelu i zastanawiałem się, czy jest jakiś sposób wysłania utworzonego przeze mnie programu Excel do klientów pobierz bez zapisywania go na moim serwerze lub usunięcie go zaraz po jego pobraniu
Próbuję utworzyć „przycisk eksportu” na stronie, który da użytkownikowi „wyskakujące okienko” z programem Excel, którego chce, a który właśnie utworzyłem.
teraz po utworzeniu tabeli robię:
$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");
ale to zapisuje go na moim serwerze
Dziękuję Ci
header
wierszy i->save()
akcji. Musisz zdecydować między a) wyświetleniem strony lub b) zaoferowaniem pobrania. Oba nie działają łatwo z jednym skryptem. Możesz jednak utworzyć jeden skrypt dla pobierania i jeden dla strony, a po wykonaniu skryptu strony, przekierować do skryptu pobierania, co spowoduje, że przeglądarka wyświetli okno dialogowe Zapisz jako.Content-Length
nagłówek podczas używaniaphp://output
?$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');
źródło
MIME
typ naapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, to pobiera plik w moim systemie, ale to mówiFile can't be opened
. Plik działał, gdy kod zapisywał go na serwerze.DO UŻYTKU XLSX
SET IN $ xlsName z XLSX z rozszerzeniem. Przykład: $ 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');
DO STOSOWANIA XLS
SET IN $ xlsName nazwa z XLS z rozszerzeniem. Przykład: $ 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');
źródło
MIME
typ naapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, to pobiera plik w moim systemie, ale to mówiFile can't be opened
. Plik działał, gdy kod zapisywał go na serwerze.Użyj tego połączenia
$objWriter->save('php://output');
Aby wydrukować arkusz XLS na stronie, na której się znajdujesz, po prostu upewnij się, że strona, na której się znajdujesz, nie ma innych wydruków, wydruków.
źródło
MIME
typ naapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, to pobiera plik w moim systemie, ale to mówiFile can't be opened
. Plik działał, gdy kod zapisywał go na serwerze.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');
źródło
MIME
typ naapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, to pobiera plik w moim systemie, ale to mówiFile can't be opened
. Plik działał, gdy kod zapisywał go na serwerze.możliwe, że już rozwiązałeś swój problem, mam nadzieję, że to ci pomoże.
wszystkie pobierane pliki zaczynają się od pustej linii, w moim przypadku są to cztery puste linie, i powoduje to problem. Nieważne, czy pracujesz z
readfile();
lubsave('php://output');
, Można to naprawić, dodającob_start();
na początku skryptu iob_end_clean();
tuż przedreadfile()
; lubsave('php://output');
.źródło
ob_end_clean()
nieod_end_clean()