일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 소비전력
- 아파치
- php
- 램가스초월
- 리눅스
- jQuery
- OpenWrt
- Apache
- 가상서버호스팅
- ConoHa
- iptime
- 시놀로지
- mysql
- SKT
- 티스토리
- 알리익스프레스
- centos
- 자바스크립트
- 보르비스초월
- 복현오거리
- PHP-FPM
- 윈도우10
- 스톤에이지
- proxmox
- 킹북이초월
- 알뜰폰
- KB증권
- 라즈베리파이2
- Rocky
- KB국민카드
- Today
- Total
맛집 여행 캠핑 일상 생활
PHPExcel 엑셀 다운로드 본문
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('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정도 계산해주면 된다.
'LAMP' 카테고리의 다른 글
리눅스 트래픽 모니터링 쉘스크립트 (0) | 2016.02.26 |
---|---|
리눅스 여러개의 파일에서 특정문자열 치환 (0) | 2016.02.25 |
MySQL 바이너리 로그 정리 (0) | 2016.02.23 |
PHP number_format 함수 (0) | 2016.02.23 |
MySQL 대소문자 구분하기 (0) | 2016.02.22 |