phpexcel 사용
페이지 정보
본문
<?php
/*기본설정*/
require_once "./PHPExcel/PHPExcel.php";
/* 샘플파일대로 하려면 아래 소스로 */
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load("./MockSelectPoint.xlsx");
/* 양식을 만드려면 아래 소스로 */
//$objPHPExcel = new PHPExcel();
$sheet = $objPHPExcel->getActiveSheet();
// Excel 문서 속성
$objPHPExcel->getProperties()
->setCreator("rano") // 작성자
->setLastModifiedBy("rano") // 최종 수정자
->setTitle("제목") // 타이틀
->setSubject("모의고사") // 주제
->setDescription("선택 모의고사 저장") // 설명
->setKeywords("모의고사") // 키워드
->setCategory("rano.kr에 있음"); // 라이센스
// 테두리 스타일 지정
$defaultBorder = array(
'style' => PHPExcel_Style_Border::BORDER_THIN,
'color' => array('rgb'=>'000000')
);
$headBorder = array(
'borders' => array(
'bottom' => $defaultBorder,
'left' => $defaultBorder,
'top' => $defaultBorder,
'right' => $defaultBorder
)
);
$sheet->getStyle("A".$i.":P".$i)->applyFromArray( $headBorder );
// 다중 셀 보더 스타일 적용
foreach(range('A','C') as $i => $cell){
$sheet->getStyle($cell.'1')->applyFromArray( $headBorder );
}
// 페이지 나눔
$objPHPExcel->getActiveSheet()->setBreak( 'A' . $p, PHPExcel_Worksheet::BREAK_ROW );
// 가로로 인쇄하는, 세로는 기본임
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
// 인쇄 용지 사이즈 설정
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
// 페이지 여백
$objPHPExcel->getActiveSheet()->getPageMargins()
->setTop(0.6)
->setRight(0.3)
->setLeft(0.3)
->setBottom(0.2);
// 인쇄시 반복인쇄될 타이틀 1행과 4행이 반복되어 인쇄
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd('1', '4');
// 한페이지에 출력되게 함. 44는 해당 열까지 인쇄포함. xml로 저장하여 알아냄.
$objPHPExcel->getActiveSheet()->getPageSetup()->setScale('44');
// 문서 열어볼시 미리 선택되어지는 셀 설정
//$sheet->setSelectedCellByColumnAndRow(5, 1);
// 엑셀파일 오픈시 첫번쨰로 보여줄 시트 인덱스 설정
$objPHPExcel->setActiveSheetIndex(0);
//엑셀 수정시 비밀번호를 입력해야된다. 읽기 전용으로 저장
$sheet->getProtection()
->setSheet(true)
->setSort(true)
->setInsertRows(true)
->setFormatCells(true)
->setPassword("0000"); // 이게 비번
// 첫번째 제목 라인 폰트 bold
$sheet->getStyle('A1:K1')->getFont()->setBold(true);
// 첫번째 제목 라인 폰트 배경색 지정
$sheet->getStyle('A1:K1')->getFill()->applyFromArray(
array (
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array (
'rgb' => 'dadada'
)
)
);
// 첫번째 제목 라인 border
$sheet->getStyle('A1:K1')->getBorders()->applyFromArray(
array(
'allborders' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN,
'color' => array(
'rgb' => '000000'
)
)
)
);
// 첫번째 제목 라인 스크롤시 고정 처리
$sheet->freezePane('A2');
// 데이터 삽입
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue("A".$i, $row['grade'])
->setCellValue("B".$i, $row['st_number'])
->setCellValue("C".$i, $row['st_number'])
->setCellValue("D".$i, $row['contents'])
->setCellValue("E".$i, $content_cnt)
->setCellValue("F".$i, $up_date)
->setCellValue("G".$i, $row['wr_st_number']);
// 함수넣기
$objPHPExcel->getActiveSheet()->setCellValue('E4', '=IF(D4<>"",C4*D4,"")');
// 셀 합치기
$sheet->mergeCells('J1:M1');
// 셀 가로크기
$sheet->getColumnDimension('A')->setWidth('6');
$sheet->getColumnDimension('D')->setWidth('20');
// 셀 높이
$sheet->getRowDimension('1')->setRowHeight('25');
// 셀 숫자형 변환 (1000 -> 1,000)
$sheet->getStyle('A1:C1')->getNumberFormat()->setFormatCode('#,##0');
// 글꼴 및 정렬
$sheet->duplicateStyleArray(
array(
'font' => array(
'name' => 'Times New Roman',
'italic' => false,
'bold' => true,
'size' => 14
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
)
),
'A1'
);
// 'A1' 를 'A3:N5'이렇게
//개별 적용
$sheet->getStyle('A1')->getFont()->setBold(true); // 셀의 text를 굵게
$sheet->getStyle('A1')->getFont()->setSize(13); // 셀의 textsize를 13으로
//줄바꿈 허용
$sheet->getStyle('D2')->getAlignment()->setWrapText(true);
// 배경색 적용
$sheet->duplicateStyleArray(
array(
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array('rgb'=>'F3F3F3')
)
),
'A1:C1'
);
// 셀 정렬 (다른방식)
$sheet->getStyle('A1')
->getAlignment()
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('A1:C1')
->getAlignment()
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//테두리
//셀 전체(윤곽선 + 안쪽)
$sheet->getStyle('B2:C3')->getBorders()
->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//윤곽선
$sheet->getStyle('B5:C6')->getBorders()
->getOutline()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//안쪽
$sheet->getStyle('B8:C9')->getBorders()
->getInside()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//세로선
$sheet->getStyle('B11:D13')->getBorders()
->getVertical()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//가로선
$sheet->getStyle('B15:D17')->getBorders()
->getHorizontal()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
?>
- 이전글배열값중 빈값 제거 17.11.04
- 다음글반복 예약작업 cron 기능 17.09.06
댓글목록
등록된 댓글이 없습니다.