DB에서 가져온 내용을 엑셀파일로 다운로드 하여 보여주는 방법을 알아봅니다.
DB에서 데이터를 각자 받아오시구요.
버튼을 누르면 엑셀을 뿌려줄 페이지로 submit 시키세요.
그럼 엑셀 파일을 뿌려줄 부분부터 설명 드리겠습니다.
엑셀파일을 뿌려줄 페이지를 만듭니다.(php또는 html안에 php)
다음 코드를 맨 위에 넣습니다. 헤더는 항상 위에 있어야합니다.
<?php
$filename = "test.csv"; // 파일의 확장자는 csv 입니다
Header("Content-Type: application/octet-stream");
Header("Content-Disposition: attachment; filename=$filename");
Header("Pragma: no-cache");
Header("Expires: 0");
?>
// ob_start가 부르는 콜백 함수
function setEncoding($buffer) {
return mb_convert_encoding($buffer, 'EUC-KR', 'UTF-8');
}
ob_start("setEncoding");
$body = "DB에서 받아온 내용을 스트링으로 body에 집어넣으세요";
echo $body;
ob_end_flush();
--------------------------------------------------------------------------
소스 설명을 해드리겠습니다.
ob_start 부분을 보시면 함수명만을 쓰는걸 보면 콜백함수라는걸 알 수 있죠.
ob_end_flush()가 나타날때까지의 echo로 출력된 텍스트를
setEncoding이라는 콜백함수를 통해 내부버퍼로 저장을 해놓는 것입니다.
mb_convert_encoding() 이라는 php의 함수를 사용했는데요.
파라미터는 총 3개입니다.
첫번째는 스트링
두번째는 바꿀 인코딩 종류
세번째는 원래의 인코딩 입니다.
*** tip
php 전역변수를 콜백함수에서 사용할 경우,
일반적 함수에서는 사용이 가능하지만 콜백함수는 함수명으로 찾기때문에
전역변수는 찾아지지 않습니다.
콜백함수내에서 global $전역변수명; 을 선언해주고 사용할 수 있습니다.
DB에서 데이터를 각자 받아오시구요.
버튼을 누르면 엑셀을 뿌려줄 페이지로 submit 시키세요.
그럼 엑셀 파일을 뿌려줄 부분부터 설명 드리겠습니다.
엑셀파일을 뿌려줄 페이지를 만듭니다.(php또는 html안에 php)
다음 코드를 맨 위에 넣습니다. 헤더는 항상 위에 있어야합니다.
<?php
$filename = "test.csv"; // 파일의 확장자는 csv 입니다
Header("Content-Type: application/octet-stream");
Header("Content-Disposition: attachment; filename=$filename");
Header("Pragma: no-cache");
Header("Expires: 0");
?>
// ob_start가 부르는 콜백 함수
function setEncoding($buffer) {
return mb_convert_encoding($buffer, 'EUC-KR', 'UTF-8');
}
ob_start("setEncoding");
$body = "DB에서 받아온 내용을 스트링으로 body에 집어넣으세요";
echo $body;
ob_end_flush();
--------------------------------------------------------------------------
소스 설명을 해드리겠습니다.
ob_start 부분을 보시면 함수명만을 쓰는걸 보면 콜백함수라는걸 알 수 있죠.
ob_end_flush()가 나타날때까지의 echo로 출력된 텍스트를
setEncoding이라는 콜백함수를 통해 내부버퍼로 저장을 해놓는 것입니다.
mb_convert_encoding() 이라는 php의 함수를 사용했는데요.
파라미터는 총 3개입니다.
첫번째는 스트링
두번째는 바꿀 인코딩 종류
세번째는 원래의 인코딩 입니다.
*** tip
php 전역변수를 콜백함수에서 사용할 경우,
일반적 함수에서는 사용이 가능하지만 콜백함수는 함수명으로 찾기때문에
전역변수는 찾아지지 않습니다.
콜백함수내에서 global $전역변수명; 을 선언해주고 사용할 수 있습니다.




덧글