PHP

[PHP] PHPExcel 엑셀 다운로드 기능 (.xls, .xlsx 차이)

chsr 2023. 8. 14. 17:09
728x90
반응형

■ PHP PHPExcel 엑셀 다운로드 기능 (.xls, .xlsx 차이)


■ .xls 다운로드 

.xls 엑셀 파일로 다운로드하게 할 경우 createWriter 함수 2번째 변수를 Excel5 로 설정해줘야 함

<?php

require_once $_SERVER['DOCUMENT_ROOT']."PHPExcel/Classes/PHPExcel.php";

ini_set("memory_limit" , -1);
@set_time_limit(0);

// EXCEL START
$objPHPExcel = new PHPExcel();
$sheet = $objPHPExcel->getActiveSheet();

// 타이틀 셋팅
$objPHPExcel-> setActiveSheetIndex(0)
    -> setCellValue("A1", "id")
    -> setCellValue("B1", "title")
    -> setCellValue("C1", “description)
;

// 셀 가로크기 지정
$sheet->getColumnDimension('A')->setWidth(30);
$sheet->getColumnDimension('B')->setWidth(30);
$sheet->getColumnDimension('C')->setWidth(15);

// 타이틀 스타일 (중앙정렬,B)
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->applyFromArray(
    array(
        'alignment' => array(
            'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
            'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
        )
        ,'font' => array( 'bold' => true )
    )
);

// 틀 고정 (A1행까지 고정)
$objPHPExcel->getActiveSheet()->freezePane('A2');

for( $i=1; $i<=3; $i++ ){    
    $objPHPExcel->setActiveSheetIndex(0)
        -> setCellValue("A".($i+1), ‘id’.$i)
        -> setCellValue("B".($i+1), ‘title’.$i)
        -> setCellValue("C".($i+1), ‘desc’.$i)
    ;
}

// 시트 이름 설정
$sheet->setTitle(“Sample Sheet”);

// EXCEL 파일명
$excel_name = “Sample.xls”;

// EXCEL OUTPUT
header( "Content-type: application/vnd.ms-excel; charset=utf-8");
header( "Content-type: application/x-msexcel; charset=utf-8");
header('Content-Disposition: attachment;filename="' . $excel_name . '"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5");
$objWriter->save('php://output');

?>

 

■ .xlsx 다운로드 

.xlsx 엑셀 파일로 다운로드하게 할 경우 createWriter 함수 2번째 변수를 Excel2007 로 설정해줘야 함
+ 최상단 header 추가 (utf-8)

<?php

header("Content-Type:text/html;charset=utf-8");
require_once $_SERVER['DOCUMENT_ROOT']."PHPExcel/Classes/PHPExcel.php";

ini_set("memory_limit" , -1);
@set_time_limit(0);

// EXCEL START
$objPHPExcel = new PHPExcel();
$sheet = $objPHPExcel->getActiveSheet();

// 타이틀 셋팅
$objPHPExcel-> setActiveSheetIndex(0)
    -> setCellValue("A1", "id")
    -> setCellValue("B1", "title")
    -> setCellValue("C1", “description)
;

// 셀 가로크기 지정
$sheet->getColumnDimension('A')->setWidth(30);
$sheet->getColumnDimension('B')->setWidth(30);
$sheet->getColumnDimension('C')->setWidth(15);

// 타이틀 스타일 (중앙정렬,B)
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->applyFromArray(
    array(
        'alignment' => array(
            'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
            'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
        )
        ,'font' => array( 'bold' => true )
    )
);

// 틀 고정 (A1행까지 고정)
$objPHPExcel->getActiveSheet()->freezePane('A2');

for( $i=1; $i<=3; $i++ ){    
    $objPHPExcel->setActiveSheetIndex(0)
        -> setCellValue("A".($i+1), ‘id’.$i)
        -> setCellValue("B".($i+1), ‘title’.$i)
        -> setCellValue("C".($i+1), ‘desc’.$i)
    ;
}

// 시트 이름 설정
$sheet->setTitle(“Sample Sheet”);

// EXCEL 파일명
$excel_name = “Sample.xlsx”;

// EXCEL OUTPUT
header( "Content-type: application/vnd.ms-excel; charset=utf-8");
header( "Content-type: application/x-msexcel; charset=utf-8");
header('Content-Disposition: attachment;filename="' . $excel_name . '"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
$objWriter->save('php://output');

?>
728x90
반응형