메뉴 건너뛰기

프로그램언어

조회 수 17117 추천 수 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
번호 제목 날짜 조회 수
220 다중 파일을 zip으로 묶어받기 2020.06.19 643
219 다중 도메인에 따른 접속방법 2017.03.06 19375
218 네이버 지도 API를 이용한 주소를 좌표로 변환하기 (PHP) 2020.09.22 500
217 네이버 지도 API 연동 PHP 소스 2017.03.06 18649
216 네이버 지도 api php버전 2014.03.26 19440
215 네이버 자동 띄어쓰기를 이용하기 2017.03.27 17944
214 내 계정 용량 체크 2019.01.08 1604
213 날짜함수 사용하여 한달에 주차 구하기 weeks by month 2021.07.08 856
212 날짜계산 몇일까지.. [ ex)4 일전 new 표시 ] 2018.07.24 4529
211 날짜/시간함수 정리 2018.08.29 2434
210 날짜, 시간 포맷하기 (PHP) 2018.07.04 5240
209 날짜 일수 차이 계산 2017.03.07 19986
208 날짜 계산하기 (하루전 날짜 구하기) 2014.02.27 21632
207 깨진 한글 체크 2016.12.23 20224
206 기본적인 페이징 2017.03.07 24852
205 금액 단위를 만단위부터 표시하는방법 2019.01.16 1920
204 글내용 이미지 리사이징 2014.02.27 29451
203 그누보드, 여분필드 사용팁 2017.03.06 17619
202 그누보드 https 보안서버 연결시 오류 2023.01.12 288
201 구글 학술 검색 2021.03.26 257
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved