programing

다운로드 할 phpexcel

projobs 2022. 9. 22. 22:06
반응형

다운로드 할 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

반응형