PHP에서 excel 파일로 데이터 다운 받기

잘 알려진 팁이지만 다음과 같은 header를 날린 후 데이터를 table로 만들면 excel로 데이터를 날릴 수 있다.

header("Content-type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Disposition: attachment; filename=registry2.xls");
header("Content-Description: PHP5 Generated Data");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

그런데 문제는 한글이 깨진다는 거... 버그로 추정되지만 header로 날린 charset는 먹지 않는다. 그래서 meta tag를 써서 다시 charset를 넣어 줘야 한다.

<meta content="application/vnd.ms-excel; charset=UTF-8" name="Content-type">
<meta content="Excel.Sheet" name="ProgId">
<meta content="PHP5" name="Generator">

이런 식으로 쓰면 된다.

by Hwan | 2007/02/12 05:17 | Computer & Network | 트랙백 | 덧글(6)

트랙백 주소 : http://drshawn.egloos.com/tb/2992750
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by good2cu at 2007/02/15 00:21
외계의 언어요?
Commented by Hwan at 2007/02/16 23:09
보통 사람이 우리 EMR 내용을 봐도 같은 얘기를 하겠지...

전에 잘 처리했던 코드인데 이번에 다시 코딩하면서 어떻게 했는지 기억이 안나다가 간신히 생각나서 블로그에 남겨 놓는 것...
Commented by inho at 2007/02/18 10:34
ㅡ.ㅡ 우어어 외계어닷. 큭.
Commented by 마법사 at 2007/09/29 01:04
웹서버 세팅이랑 기타 다른 셋팅이 어찌되어 있는지 모르겠지만..
첫번째 코드에서 CHARSET=UTF-8로 되어 있는거.. 실제로 엑셀은.. 아니 윈도우죠.. 윈도우는
CP949, KSC5601확장을 쓰기때문에 charset=EUC-KR로 하고 나중에 나오는 table태그안에
한글은 모두 iconv로 변경해서 출력하면 한글이 깨지지 않을것입니다. 버그는 아닌듯.
Commented by Hwan at 2007/09/29 09:43
엑셀에서 읽기 위한 파일이지만 사실상 XML 파일이고 Excel이 unicode를 다룰 수 있기 때문에 문제가 없어야 합니다. 다만 파일 안에 encoding에 대한 정보가 없다면 기본으로 UTF-8로 인식을 하지 않기 때문에 header로 날리는 것은 의미가 없고 HTML 코드 안에 encoding 정보를 넣어야 하는 것으로 생각되는군요.

뭐 그렇게 생각하면 버그는 아니죠...
Commented at 2009/05/06 20:30
비공개 덧글입니다.

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶