특정 기간동안 검색 엔진별 접속 수 Excel로 변환하기
작업 중인 사이트에 사용하려고 만들어본 특정 기간동안의 검색 엔진의 접속수 구하는 코드이다. 그누보드에서
사용해도 별 무리는 없을 것 같다. 물론 영카트4에 사용해도 무리가 없을 듯 하다.
include_once(“./_common.php”);
// 검색엔진 도메인
$search_engine = array(“naver.com”, “daum.net”, “nate.com”, “msn.com”, “yahoo.com”, “paran.com”, “zum.com”);
if(!$to_date || $to_date > $g4[time_ymd]) {
    $to_date = $g4[time_ymd];
}
if(!$fr_date) {
    $fr_date = date(“Y-m-d”, strtotime(“-6 days” ,strtotime($to_date)));
}
$sql_common = ” from $g4[visit_table] “;
$sql_search = ” where vi_date between ‘$fr_date’ and ‘$to_date’ “;
$sql_order = ” order by vi_date asc “;
$sql = ” select vi_date
            $sql_common
            $sql_search
            group by vi_date
            $sql_order “;
$result = sql_query($sql);
// 라이브러리 인클루드
require_once(“$g4[path]/lib/PHPExcel.php”);
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
// Excel 문서 속성을 지정해주는 부분이다. 적당히 수정하면 된다.
$objPHPExcel->getProperties()->setCreator(“관리자”)
                            ->setLastModifiedBy(“관리자”)
                            ->setTitle(“방문경로수”)
                            ->setSubject(“방문경로수”)
                            ->setDescription(“방문경로수”)
                            ->setKeywords(“방문경로수”)
                            ->setCategory(“VISIT”);
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue(“A1”, “$fr_date ~ $to_date 방문경로 수”)
            ->setCellValue(“A2”, “일자”)
            ->setCellValue(“B2”, “네이버”)
            ->setCellValue(“C2”, “다음”)
            ->setCellValue(“D2”, “네이트”)
            ->setCellValue(“E2”, “MSN”)
            ->setCellValue(“F2”, “야후”)
            ->setCellValue(“G2”, “파란”)
            ->setCellValue(“H2”, “ZUM”);
for($i = 0; $row = sql_fetch_array($result); $i++) {
    $vi_count = array();
    for($k = 0; $k < count($search_engine); $k++) {
        $regexp = str_replace(“.”, “\.”, $search_engine[$k]);
        $sql = ” select count(vi_id) as cnt from $g4[visit_table] where vi_referer REGEXP ‘$regexp’ and vi_date = ‘$row[vi_date]’ “;
        $vi = sql_fetch($sql);
        if($vi[cnt]) {
            $cnt = $vi[cnt];
        } else {
            $cnt = 0;
        }
        array_push($vi_count, $cnt);
    }
    $idx = $i + 3;
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue(“A$idx”, “$row[vi_date]”)
                ->setCellValue(“B$idx”, “$vi_count[0]”)
                ->setCellValue(“C$idx”, “$vi_count[1]”)
                ->setCellValue(“D$idx”, “$vi_count[2]”)
                ->setCellValue(“E$idx”, “$vi_count[3]”)
                ->setCellValue(“F$idx”, “$vi_count[4]”)
                ->setCellValue(“G$idx”, “$vi_count[5]”)
                ->setCellValue(“H$idx”, “$vi_count[6]”);
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle(“방문경로수”);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
$filename = iconv(“UTF-8”, “EUC-KR”, “방문경로수”);
// Redirect output to a client’s web browser (Excel5)
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename=”‘ . $filename . ‘.xls”‘);
header(‘Cache-Control: max-age=0’);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5’);
$objWriter->save(‘php://output’);
exit;
?>
자료의 Excel 파일변환은 2011/03/17 – PHP에서 Excel 파일을 만들 수 있는 PHPExcel를
사용했다.