메뉴 건너뛰기

프로그램언어

조회 수 17112 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
가끔 홈페이지나 쇼핑몰을 개발하다 보면 DB에 저장된 데이트를 EXCEL(이하 엑셀)파일로 다운로드 해야할 경우가
생긴다. 이전까지는 html table 태그를 이용해서 엑셀 파일을 생성하는 방법을 사용했지만 Excel 2007에서는 이럴
경우 파일 형식이 받지 않는다며 경고창을 띠운다. 잘 모르는 사람들은 파일 깨졌다고 오해를 하기도 하는데.. 그래서
이번에 작업을 하면서 정상적인 엑셀 파일을 만들 수 있는 방법이 없을까 검색하다 PHPExcel이라는 멋진 것을 찾아
작업을 완료했다. 어제까지만 해도 귀찮아서 table 태그를 사용했는데.. 오늘은 왠지 이걸 한번 해보고 싶었다는.. ^^;


phpexcel_logo.jpg


다운로드 : http://phpexcel.codeplex.com/



한가지 주의할 것은 아래 요구사항을 만족해야만 PHPExcel를 사용할 수 있다.

Requirements
    * PHP version 5.2.0 or higher
    * PHP extension php_zip enabled *)
    * PHP extension php_xml enabled
    * PHP extension php_gd2 enabled (if not compiled in)



우선 PHPExcel 사이틀 방문해서 Class 파일을 다운로드 한다. 홈페이지 오른쪽 상단부분에 DOWNLOAD 버튼이
존재한다. 설치법은 다운로드 받은 파일의 압축을 푼 후 Classes 폴더를 계정의 적당한 위치에 업로드 하는 것이다.
Classes 폴더를 업로드 하는 것으로 PHPExcel의 사용을 위한 준비는 끝났다. 이제 엑셀파일을 만드는 페이지를
만들면 된다. 아래는 간단한 PHP코드로 이것을 적당히 수정해서 사용하면 될 것이다. 코드는 많이 허접하다는.. ^^;

<?php
// DB 접속 부분은 생략

$sql = " SELECT * FROM license_table order by order asc ";
$result = mysql_query($sql);
$cnt = @mysql_num_rows($result);
if (!$cnt) {
    alert("출력할 내역이 없습니다.");
}

/** PHPExcel */
require_once("../Classes/PHPExcel.php");
/* PHPExcel.php 파일의 경로를 정확하게 지정해준다. */

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Set properties
// Excel 문서 속성을 지정해주는 부분이다. 적당히 수정하면 된다.
$objPHPExcel->getProperties()->setCreator("작성자")
                             ->setLastModifiedBy("최종수정자")
                             ->setTitle("자격증시험응시리스트")
                             ->setSubject("자격증시험응시리스트")
                             ->setDescription("자격증시험응시리스트")
                             ->setKeywords("자격증 시험")
                             ->setCategory("License");


// Add some data
// Excel 파일의 각 셀의 타이틀을 정해준다.
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue("A1", "차수")
            ->setCellValue("B1", "응시자")
            ->setCellValue("C1", "수험번호")
            ->setCellValue("D1", "상호")
            ->setCellValue("E1", "전화번호")
            ->setCellValue("F1", "휴대폰번호")
            ->setCellValue("G1", "사업장주소")
            ->setCellValue("H1", "시험장소")
            ->setCellValue("I1", "응시료")
            ->setCellValue("J1", "상태")
            ->setCellValue("K1", "자격증번호")
            ->setCellValue("L1", "발급일");

// for 문을 이용해 DB에서 가져온 데이터를 순차적으로 입력한다.
// 변수 i의 값은 2부터 시작하도록 해야한다.
for ($i=2; $row=mysql_fetch_array($result); $i++)
{   
    // Add some data
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue("A$i", "$row[order]")
                ->setCellValue("B$i", "$row[name]")
                ->setCellValue("C$i", "$row[slate_no]")
                ->setCellValue("D$i", "$row[biz_name]")
                ->setCellValue("E$i", "$row[tel]")
                ->setCellValue("F$i", "$row[hp]")
                ->setCellValue("G$i", "$row[address]")
                ->setCellValue("H$i", "$row[site]")
                ->setCellValue("I$i", "$row[invoice]")
                ->setCellValue("J$i", "$row[status]")
                ->setCellValue("K$i", "$row[license]")
                ->setCellValue("L$i", "$row[license_date]");
}

// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle("응시리스트");

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다.
$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;
?>


이외에도 PHPExcel의 다양한 기능은 압축 파일에 포함된 예제 php 파일을 통해서 확인할 수 있다.


List of Articles
번호 제목 날짜 조회 수
300 지엠 웹에디터 v1.1 (저작권표시없음)| file 2017.03.06 17109
299 주차 , 요일, 해당주의 시작일, 해당주의 종료일 date() 2021.07.08 432
298 주간단위 시작일에서 종료일을 셀렉트박스로 만들기. file 2019.04.29 1331
297 주간날짜 뽑아오기 2014.02.27 26731
296 조건문의 함수실행 여부 if ( 0 && ... ) 2021.03.26 227
295 정규표현식 매치를 수행 (preg_match) 2016.12.23 20050
294 정규표현식 검사 도구 (ereg, eregi) 2016.12.23 18395
293 정규표현식 2021.03.26 311
292 정규식 2017.04.13 17599
291 정규 표현식 검색과 치환 (preg_replace) 2016.12.23 19012
290 정규 표현 / 전화번호 / 이메일 2019.01.16 1206
289 접속 IP 검사 2015.04.14 21871
288 전화번호에 하이픈(-) 넣기 2015.04.14 26622
287 잡다한 php 2017.03.06 18502
286 자바스크립트 이스케이프 문자열을 PHP로 디코딩 하기 2018.10.27 3259
285 자릿수만큼 앞에 0 붙이기 2017.03.07 19027
284 자동으로 다른 페이지로 넘어가는 함수 2019.01.08 1256
283 이스케이프 함수 (htmlentities) 2016.12.23 18375
282 이미지 워터마크 구현 2014.03.26 19667
281 이미지 사이즈 비율로 조정하기 2019.01.08 1629
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved