본문 바로가기
php

php 엑셀 .xlsx 다운로드

by 빡스웹 2022. 5. 14.
반응형

해당 소스는 그누보드5를 기준으로 작성한 예시이며, php 버전이 7.3 이하에서만 사용이 가능합니다.

그 이상 버전은 php spreadsheet 를 사용하라는데... 다운받는 기능이 쉽게 설명된 글이 있다면 소개좀 시켜주십쇼....

<?php

include_once("_common.php");

ini_set('memory_limit', -1);

include_once(G5_LIB_PATH.'/PHPExcel.php'); //해당 파일이 있어야해요!!

$objPHPExcel = new PHPExcel();

$sql = " select * from {테이블명} where 1=1 ";

$result = sql_query($sql);

$arr = array();

for($i=0; $row=sql_fetch_array($result); $i++){

$arr[$i+1] = array(

"res_date" => $row['res_date']

, "res_time" => $row['res_time']

, "res_name" => $row['res_name']

, "res_hp" => $row['res_hp']

, "res_car" => $row['res_car']

, "res_car_number" => $row['res_car_number']

, "res_influx" => $row['res_influx']

, "res_datetime" => $row['res_datetime']

);

}

$objPHPExcel -> setActiveSheetIndex(0)

-> setCellValue("A1", "NO.")

-> setCellValue("B1", "예약일.")

-> setCellValue("C1", "예약시간")

-> setCellValue("D1", "성함")

-> setCellValue("E1", "연락처")

-> setCellValue("F1", "차종")

-> setCellValue("G1", "차량번호")

-> setCellValue("H1", "유입경로")

-> setCellValue("I1", "신청일");

$count = 1;

foreach($arr as $key => $val) {

$num = 1 + $key;

$objPHPExcel -> setActiveSheetIndex(0)

-> setCellValue(sprintf("A%s", $num), $key)

-> setCellValue(sprintf("B%s", $num), $val['res_date'])

-> setCellValueExplicit(sprintf("C%s", $num), $val['res_time'])

-> setCellValue(sprintf("D%s", $num), $val['res_name'])

-> setCellValue(sprintf("E%s", $num), $val['res_hp'])

-> setCellValue(sprintf("F%s", $num), $val['res_car'])

-> setCellValue(sprintf("G%s", $num), $val['res_car_number'])

-> setCellValue(sprintf("H%s", $num), $val['res_influx'])

-> setCellValue(sprintf("I%s", $num), $val['res_datetime']);

$count++;

}

// 가로 넓이 조정

$objPHPExcel -> getActiveSheet() -> getColumnDimension("A") -> setWidth(6);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("B") -> setWidth(20);

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

$objPHPExcel -> getActiveSheet() -> getColumnDimension("D") -> setWidth(20);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("E") -> setWidth(20);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("F") -> setWidth(20);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("G") -> setWidth(25);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("H") -> setWidth(20);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("I") -> setWidth(30);

// 전체 가운데 정렬

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:I%s", $count)) -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

// 전체 테두리 지정

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:I%s", $count)) -> getBorders() -> getAllBorders() -> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

// 타이틀 부분

$objPHPExcel -> getActiveSheet() -> getStyle("A1:I1") -> getFont() -> setBold(true);

$objPHPExcel -> getActiveSheet() -> getStyle("A1:I1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("CECBCA");

// $objPHPExcel -> getActiveSheet() -> getRowDimension(1) -> setRowHeight(23);

// 내용 지정

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A2:I%s", $count)) -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4");

// 시트 네임

$objPHPExcel -> getActiveSheet() -> setTitle("예약내역");

// 첫번째 시트(Sheet)로 열리게 설정

$objPHPExcel -> setActiveSheetIndex(0);

// 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다.

$filename = iconv("UTF-8", "EUC-KR", $excelName);

// 브라우저로 엑셀파일을 리다이렉션

header("Content-Type:application/vnd.ms-excel");

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

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

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

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

?>

반응형

'php' 카테고리의 다른 글

배열에서 특정 요소 삭제하기 unset()  (0) 2022.05.14
ajax 기본 / ajax Json  (0) 2022.03.26
php gd 라이브러리 image circle crop  (0) 2022.03.26

댓글