다운로드 할 phpexcel
안녕하세요 저는 phpexcel에 처음 와봤는데, 제가 만든 엑셀을 제 서버에 저장하지 않고 다운로드 받은 클라이언트에 보내거나 그가 그것을 다운로드한 후 바로 삭제할 방법이 없을까요?
페이지에 '내보내기 버튼'을 만들어 사용자가 원하는 엑셀로 '팝업'을 표시하려고 합니다.
테이블을 작성한 후 다음 작업을 수행합니다.
$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");
서버에 저장됩니다.
감사합니다.
파일에 저장하는 대신 에 저장합니다.
$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용
XLSX에서 $xlsName 이름을 확장자로 설정합니다.예: $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용
XLS에서 $xlsName 이름을 확장자로 설정합니다.예: $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');
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');
아마 당신은 이미 문제를 해결했을 거예요. 어떤 식으로든 도움이 됐으면 좋겠어요.
다운로드된 모든 파일은 빈 행으로 시작합니다.제 경우 빈 행이 4개일 경우 문제가 발생합니다.고객님이 고객님을 위해 작업하셔도readfile();
또는save('php://output');
, 이것은, 를 추가해 수정할 수 있습니다.ob_start();
대본의 첫머리에 그리고ob_end_clean();
의 직전에readfile()
또는save('php://output');
.
제가 한번 해봤는데$writer->save('php://output');
대부분의 답변이 제안하는 명령어입니다.
그런데 이렇게 해서 손상된 파일이 다운로드 되었습니다.
이 문제를 해결하기 위해 다음과 같이 해야 했습니다.
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="filename.xlsx"');
header('Cache-Control: max-age=0');
$path = 'path/to/temp/file.xlsx';
// save content to temporary file
$objWriter->save($path);
// This header was key to me, in order to get it working
header("Content-Length: ".filesize($path));
// output file content
readfile($path);
// delete temporary file
unlink($path);
언급URL : https://stackoverflow.com/questions/8566196/phpexcel-to-download
'programing' 카테고리의 다른 글
Vue 2 App에서 Express service 정적 (0) | 2022.09.22 |
---|---|
"Mysql 행 크기가 너무 큼"에 대한 제한 변경 (0) | 2022.09.22 |
Java Eclipse:JAR로 내보내는 것과 실행 가능한 JAR로 내보내는 것의 차이 (0) | 2022.09.22 |
판다의 데이터 프레임 컬럼 슬라이스를 가져오는 방법 (0) | 2022.09.22 |
mysql/퍼지 검색을 위한 Levenshtein 거리 구현? (0) | 2022.09.22 |