관리 메뉴

맛집 여행 캠핑 일상 생활

PHPExcel 엑셀 다운로드 본문

LAMP

PHPExcel 엑셀 다운로드

♥ 영은파더♥ 2016. 2. 24. 11:16

PHPExcel 엑셀 다운로드



DB에서 가져온 데이터를 엑셀로 다운로드하여 저장하는 것을 구현해야 될때가 있을 것이다.

이 기능을 PHP 라이브러리로 제공하고 아마 제일 많이 사용되지 않을까 싶은 것 중 하나가 PHPExcel 이다.

PHPExcel을 사용하기 위해서는 관련 소스가 필요하다.

https://phpexcel.codeplex.com/releases/view/119187 여기로 이동하여 입맛에 맞는 파일을 다운로드 하자.


언제부턴가 사이트가 변경이 되었음. ( https://github.com/PHPOffice/PHPExcel/archive/1.8.zip )



다운로드를 받은 후 소스를 풀어서 서버에 업로드를 하여야 한다.


<?php

$filename = urlencode("샘플리스트").".xls";


error_reporting(E_ALL);

ini_set('display_errors', TRUE);

ini_set('display_startup_errors', TRUE);


header('Content-Type: application/vnd.ms-excel;charset=utf-8');

header('Content-Disposition: attachment;filename="'.$filename.'"');

header('Cache-Control: max-age=0');


// Include PHPExcel

require_once dirname(__FILE__) . '/Classes/PHPExcel.php'; // 업로드한 경로를 적어주면 됨.


// Create new PHPExcel object

$objPHPExcel = new PHPExcel();


// Set document properties

$objPHPExcel->getProperties()->setCreator("작성자정보")

->setLastModifiedBy("최종수정자")

->setTitle("")

->setSubject("")

->setDescription("")

->setKeywords("office 2007 openxml php")

->setCategory("");


// 제목 첫줄

$objPHPExcel->setActiveSheetIndex(0)

            ->mergeCells('A1:D1')

            ->setCellValue('A1', '샘플리스트');


// 항목 두번째줄

$objPHPExcel->setActiveSheetIndex(0)

            ->setCellValue('A2', '컬럼1')

            ->setCellValue('B2', '컬럼2')

            ->setCellValue('C2', '컬럼3')

            ->setCellValue('D2', '컬럼4');


for($i=0,$iRow=3; $i<5; $i++,$iRow++) {

$objPHPExcel->setActiveSheetIndex(0)

           ->setCellValue('A'.$iRow, ($i+1))

           ->setCellValue('B'.$iRow, '내용')

           ->setCellValue('C'.$iRow, 10000)

           ->setCellValue('D'.$iRow, 20000);

}


$objPHPExcel->getActiveSheet()->setTitle('Sheet');


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

$objWriter->save('php://output');

?>

간단히 만들어 본 샘플 소스이다.


▶ 컬럼 사이즈 설정

// 컬럼사이즈 정의

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);

$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);

$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);


▶ 행 사이즈 설정

// 행사이즈 정의

$objPHPExcel->getActiveSheet()->getRowDimension(2)->setRowHeight(20);

$objPHPExcel->getActiveSheet()->getRowDimension(3)->setRowHeight(20);

$objPHPExcel->getActiveSheet()->getRowDimension(4)->setRowHeight(20);

$objPHPExcel->getActiveSheet()->getRowDimension(5)->setRowHeight(20);


▶ 스타일 설정

// 제목스타일

$STYLE_TITLE = array(

'alignment' => array(

'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER

),

'fill' => array(

'type' => PHPExcel_Style_Fill::FILL_SOLID,

'color' => array('rgb' => 'FFFFFF')

),

'font' => array(

'bold' => TRUE,

'color' => array('rgb' => '000000'),

'size' => 14

),

);

// 항목스타일

$STYLE_ITEM = array(

'alignment' => array(

'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER

),

'fill' => array(

'type' => PHPExcel_Style_Fill::FILL_SOLID,

'color' => array('rgb' => 'CCCCCC')

),

'font' => array(

'bold' => FALSE,

'color' => array('rgb' => '000000'),

'size' => 10

),

'borders' => array(

'outline' => array('style' => PHPExcel_Style_Border::BORDER_THIN),

'inside' => array('style' => PHPExcel_Style_Border::BORDER_THIN)

)

);

// 컬럼스타일

$STYLE_CONTENT = array(

'font' => array(

'bold' => FALSE,

'color' => array('rgb' => '000000'),

'size' => 10

),

'borders' => array(

'outline' => array('style' => PHPExcel_Style_Border::BORDER_THIN),

'inside' => array('style' => PHPExcel_Style_Border::BORDER_THIN)

)

);


$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->applyFromArray($STYLE_TITLE);
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->applyFromArray($STYLE_ITEM);
$objPHPExcel->getActiveSheet()->getStyle('A3:D7')->applyFromArray($STYLE_CONTENT);


▶ 숫자 컬럼 설정

// 숫자컬럼 정의

$objPHPExcel->getActiveSheet()->getStyle('C:D')->getNumberFormat()->setFormatCode('#,##0');

원하는 컬럼을 지정할 수 있다. getStyle('C') 이렇게 특정 1개의 컬럼만 할 수도 있고 getStyle('A:D') 이렇게 여러개를 지정할 수도 있다.


▶ 줄바꿈 처리

$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);

$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(45);

$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '첫번째줄'.chr(10).'두번째줄'.chr(10).'세번째줄');

setRowHeight 의 값은 적당히... 한줄에 15정도 계산해주면 된다.


Trackback : 0 | Comments : 0
댓글쓰기 폼