콘텐츠로 건너뛰기
Home » 블로그 » 그누보드에 엑셀(csv) 다운로드 넣기

그누보드에 엑셀(csv) 다운로드 넣기

그누보드로 사이트를 만들면 게시판을 엑셀로 다운받게 해달라는 요청을 받게 됩니다.

데이터가 많은 사이트에서는 엑셀다운로드를 붙이는 것을 권장하지 않습니다. 다운받다가 DB가 죽을 수 있기 때문입니다.

하지만 데이터가 많지 않은 사이트라면 아래와 같이 구현하면 됩니다.

  1. /bss/exceldn.php 라는 파일을 아래와 같이 만듭니다.
  2. 링크를 걸어줍니다.

다운받은 파일을 봅니다.

DB 테이블의 전체 필드를 내려받았네요.

코드르 수정해서, 원하는 필드만 받도록 수정도 여러분이 직접 해 보세요.

전체 코드 보기

이상 아래는 전체 코드입니다.

<?php
include_once('./_common.php');

$bo_table = $_REQUEST['bo_table'];
$write_table = 'g5_data_write_' . $bo_table;
$export_file_name= $bo_table .'-'.date('Ymdhis').'.csv';

header("Content-Description: File Transfer");
header('Content-Type:text/csv;charset=UTF-8;');
header('Content-Transfer-Encoding: binary');
header("Content-Disposition: attachment; filename=" . $export_file_name);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

$handle = fopen('php://output', 'w');

ob_clean(); // clean slate

$sql = "
    select *
    from {$write_table}
    limit 1000 -- 서버 죽을지 모르니 1000건만 가져오게합니다.
";

$result = sql_query($sql);

echo "\xEF\xBB\xBF";

$header_array = array();

fputcsv($handle, $header_array);

while ($row = sql_fetch_array($result)) {
    fputcsv($handle, $row);   // direct to buffered output
}

ob_flush(); // dump buffer

fclose($handle);

die();

?>