서버 이전 후 excel 출력시 파일 손상 및 지원하지 형식 오류
본문
window 서버에 php7.3버전으로 설치 후 서버 이전을 했는데, excel 출력시 웹상에서 다운은 되지만 파일을 열어 보면 "파일 손상 및 지원하지 형식 오류 "라는 문구가 출력됩니다.
php 버전 문제 인 거같아 전 서버의 php5.6버전으로 다운그레이드 했지만 똑같은 오류가 계속 나옵니다.
제가 생각하는 오류는 두 가지 인데,
1. 임시 파일 생성 문제
tempnam(G5_PATH, 'a.xls');로 임시파일을 생성하면
a.xls(문자).tmp가 출력되야 하는데 a(문자).tmp로 생성이 됩니다.
2. 헤더 문제
header("Content-Type: application/x-msexcel; name=\"".$fname."\"");
header("Content-Disposition: inline; filename=\"".$fname."\"");
부분에서 문제가 출력되는거 같습니다.
혹은 서버 설정 문제인가요?
답변 5
찾아보니 위와 같은 경우도 있네요.
다른 부분들은 phpexcel 예제 파일 참고하시구요.
https://github.com/PHPOffice/PHPExcel/blob/1.8/Examples/01simple-download-xlsx.php
phpexcel 사용중이라면
마지막에 부분에 exit; 넣어보세요.
~~~
exit;
?>
저도 정상적으로 저장은 되지만 한셀에서는 열리는데 ms-office 에서는 안열리는데
구글 여기 저기 찾아 보니 common 파일 중에 한줄 띄어 쓰기가 생기면 오류가
발생하는 걸 알았습니다.
include 된 php 파일중에
<?php 위에 한줄 띄기쓰기가 있거나 공백이 있으면 안되고
?> 마지막 뒤에 공백이나 한줄 띄어쓰기가 있으면 오류가 발생하네요
파일 전부 수정하니 정상적으로 열리네요
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5"); 이건 안되고
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007"); 이건 되네요
음...
일단 이렇게 처리를 하고 문제가 생기면 서버에 엑셀을 해서 다운로드 되는 방식으로 해야겠네요
이게 한셀은 열리는데 Excel 프로그램에서 안 열리네요;;;;;;;