• 구글 계정 로그인

phpexcel 사용

페이지 정보

profile_image
작성자 LJM
댓글 0건 조회 796회 작성일 17-10-18 08:47

본문

<?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);

?>

댓글목록

등록된 댓글이 없습니다.