2012-08-27 2 views
1

Cakephp 2.0을 사용하고 있습니다. 엑셀 형식의 일일 기본 보고서를 작성해야합니다. 그래서 CSV 파일을 생성하는 함수를 작성했습니다. OpenOffice에서 파일을 다운로드 할 때 Linux 컴퓨터에서 잘 작동하지만 Microsoft Windows에서 동일한 파일을 열려고하면 셀이 없지만 데이터가 제대로 표시됩니다. 데이터 열이 쉼표 대신 세미콜론으로 구분 될 필요가 있기 때문에 이것으로 나는 나의 코딩PHP CSV 셀 생성 윈도우에 표시되지 않습니다.

$model.= "-".date('d M,Y'); 
    header ("Expires: Mon, ".date('d M,Y')." GMT"); 
    header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); 
    header ("Cache-Control: no-cache, must-revalidate"); 
    header ("Pragma: no-cache"); 
    header ("Content-type: application/vnd.ms-excel"); 
    header ("Content-Disposition: attachment; filename=\"$model.xls"); 
    header ("Content-Description: Generated Report"); 

중 하나가

+0

파일을 먼저 다운로드하고 Excel에서 열어 보았습니까? Excel에서 약간 다른 CSV 형식이 필요할 수 있습니다. 생성 된 CSV 파일의 예가 도움이됩니다. – neu242

+0

운영 체제는 CSV 파일을 여는 방법에 영향을주지 않습니다. Windows에서도 OpenOffice를 사용하고 있다면 오픈해야합니다 ... 또한 파일 이름 확장자는'* .csv' 여야합니다. – feeela

+0

Excel에서 파일을 "열기"대신 "데이터 가져 오기"를 찾습니다. – bfncs

답변

3

여기 뭔가 잘못되었을 수도 있습니다. 헤더를 확인하십시오. 질문에 CSV를 언급했으며 Excel 헤더를 작성하고 있습니다. 그건 내가 완벽 열기 사무실에서뿐만 아니라 창에서 나를 위해 노력하고 헤더 형식의이 종류를 사용하고 MS Excel

header ("Content-type: application/vnd.ms-excel"); 
header ("Content-Disposition: attachment; filename=\"$model.xls"); 
header ("Content-Description: Generated Report"); 

혼동 될 수있다. 시도해주세요.

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-type: octet/stream"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/download"); 
header("Content-disposition: attachment; filename=" . basename($filename.".csv")); 
header("refresh: 0; url= ".$redirect_url); 
1

엑셀 CSV 파일 SSV 파일 이름을 지정해야합니다 고맙습니다에게 도움이 나와. 또한 데이터는 따옴표로 묶어야하고 내부 따옴표는 큰 따옴표로 이스케이프해야합니다. 예 : 1;"Some ""string"" with escapes".

관련 문제