메뉴 건너뛰기

프로그램언어

조회 수 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
번호 제목 날짜 조회 수
320 파일 이름에서 확장자 추출마스터 2017.03.07 20061
319 파일 업로드 (중복처리) 2017.03.06 20184
318 파일 삭제 2015.04.14 25334
317 파일 및 데이타베이스 백업 2019.01.08 1610
316 파일 다운로드 함수(멀티 이어받기/속도제한) 2020.06.19 618
315 파일 output을 return 하기 2021.03.26 243
314 파일 2019.01.08 1226
313 특정일의 주차 구하기 2021.07.08 322
312 특수문자 없애는 정규표현식 2014.03.26 21623
311 템플릿 관련 정보 2016.08.22 20732
310 태그 또는 멘션 소스 뽐아내기방법 2019.01.16 1249
309 키를 이용한 암호화/복호화 함수입니다. 2018.07.24 5741
308 클래스와 인스턴스 그리고 메소드 만들기 2021.03.27 231
307 큰따옴표(") 와 작은따옴표(') 2021.03.25 270
306 쿠폰번호 발행 업데이트판. (간단한 클래스화[PHP4 기준] 등...) 2018.07.19 6041
305 쿠키변수받기 2014.02.27 29211
304 쿠키 확인 후 만료시 세션 파괴하는 방법 2020.11.23 314
303 콜론 연산자 2021.03.26 307
302 코드 생성 하기 2023.01.12 213
301 체크박스, post 로 넘기고 받아서 다시 체크하기, checkbox 2017.03.07 21131
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved