2013-05-29 2 views
0

Excel 파일은 데이터베이스에 저장됩니다 (이전 바이너리 데이터의 16 진수 값). 나는 그것을 읽고 그것을 다운로드 할 수있게해야한다.PHP 헤더를 통한 Excel 전송()

여기

$out = hex2bin($out); // the stuff from the database 


header("Content-Type: application/vnd.ms-excel"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Disposition: attachment; filename='$filename'"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
die($out); 

는 사실 내가 물건을받을 ... 코드의 ... 그리고 약간의 차이가 원본 파일처럼 보인다. 헥스 편집기를 사용하는 경우 , 그것은 (추가 탭 모양)

ÐÏࡱá 

대신

ÐÏࡱá 

을 보여줍니다. 따라서 Excel에서는 시트를 표시 할 수는 없지만 원시 데이터는 표시 할 수 있습니다.

이것은 데이터가 아니며 $out입니다. 변환 bin2hex (데이터베이스에서 가져 오기 중) 및 hex2bin (데이터베이스에서 내보내기) 문제없이 작동합니다. fopen/fwrite를 통해 $out을 파일에 쓰면 정확히 원래의 Excel 파일 (정상적으로 열 수 있음)입니다.

어떻게하면됩니까?

+0

이것은 매우 지역화 된 질문이지만, die() 전에 공백 문자가 울리는 것과 관련이있을 수 있다고 생각합니다. – Farkie

+1

왜 당신은 죽을 사용하고 있습니까? die는 exit와 같으며 오류 코드 또는 다른 것이어야합니다. 왜 반향을하지 않을까요? 출구(); – steven

+1

글쎄, 실제로 두 버전은 차이점을 보이지 않습니다. – user2432939

답변

1

열기 전에 <?php 태그 나 그 뒤에있는 여분의 탭 문자가 없도록하십시오. ?>. 실제로 이러한 이유로 닫는 태그를 생략하는 것이 좋습니다.

+0

여전히 동일하지만 이상한 점 : 문제없이 pdf를 내보낼 수 있습니다. – user2432939