메뉴 건너뛰기

프로그램언어

조회 수 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 addslashes — 문자열을 슬래시로 인용 2016.12.23 23083
299 PHP 삼항연산자 ? file 2015.04.14 22947
298 phpexcel을 이용한 PHP로 엑셀파일 읽기와 생성 file 2017.03.06 22787
297 PHP 로그인후 현재 페이지로 돌아오기 처리 2014.04.12 22662
296 php한글체크를 위한 정규표현식 2014.04.12 22458
295 PHP 파일 다루기 2015.04.14 22401
294 PHP에서 CSV 파일 export file 2016.04.22 22335
293 array_key_exists 배열에서 key가 존재하는지 확인 2016.12.23 22206
292 PHP에서 조건문 처리 2015.04.14 22038
291 파일 확장자 비교 2016.12.23 21970
290 접속 IP 검사 2015.04.14 21871
289 iframe 사용시 iframe의 높이가 내용의 높이만큼 자동으로 조절 2014.04.12 21862
288 php 파일 다운로드 구현 2014.04.12 21699
287 PHPExcel 클래스를 이용해 Excel 2007~2010 의 xlsx 파일 읽기 (100만 행 까지) 2017.03.06 21695
286 파일시스템, 폼 파일업로드 관련 함수 2017.03.27 21681
285 날짜 계산하기 (하루전 날짜 구하기) 2014.02.27 21627
284 특수문자 없애는 정규표현식 2014.03.26 21623
283 array_push 배열 끝에 하나 이상의 요소를 추가 2016.12.23 21604
282 유용한 함수 모음 2014.02.27 21422
281 call_user_func 사용자가 정의한 함수를 호출하여 실행고자 할 때 사용 2016.12.23 21302
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved