엑셀파일 만들때 추가해줘야하는 헤더부분
header('Content-Type: doesn/matter');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename="test' .date("YmdHis", time()) . '.csv"');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
한글이 깨질때는 속성을 csv로 바꿔보고
echo "\xEF\xBB\xBF";
이 echo문을 추가해보기!
이후에는select문으로 가져온 값을 저장해준다
$csvData = ""; // 빈 문자열로 초기화
$headerPrinted = false; // 헤더 출력 여부를 확인하기 위한 변수
foreach ($sql as $row) {
// 헤더 출력
if (!$headerPrinted) {
$csvData .= implode(",", array_keys($row)) . "\n"; // 헤더 (키 이름들)
$headerPrinted = true; // 헤더를 한 번만 출력하기 위해 true로 변경
}
// 값들 추가
$csvData .= implode(",", array_values($row)) . "\n"; // 값들
}
csv형식으로 저장하기위해 키/값 을 foreach문 돌려서 저장해준다
엑셀 다운로드
function excel(){
if(!confirm('다운로드 받으시겠습니까?')){
return ;
}
var url ="url";
document.location.href=url;
}
클릭시 url 이동
include PATH_ENGIN_LIB."/PHPExcel.php";
라이브러리 추가
$query = "SELECT문";
$arData = $this->db->getArray($query);
$arWork = array();
foreach ($arData as $item) {
$arWork[]= array(
"id" => $["id"],
"name" => $["name"],
"cell" => $["cell"],
.
.
.
.
);
$arTitle = array("아이디","이름","연락처",);
select문으로 엑세로 만들고싶은 데이터 가져온 뒤
1열에 담길 타이틀 만들어주기
//엑셀 스타일
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$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 )
)
);
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(30);
$oSheet = $objPHPExcel->getActiveSheet();
$oSheet->setTitle('신청내역 리스트');
$oSheet->fromArray($arTitle,NULL,'A1');
엑셀 스타일
A1셀부터 타이틀 담기
$NO =2;
foreach($arWork AS $data){
$arRow = array();
$arRow[] = $data["id"];
$arRow[] = $data["name"];
$arRow[] = $data["cell"];
$oSheet->fromArray($arRow,NULL,'A'.$NO);
$NO++;
}
값 2열부터 넣어주기
//debug("엑셀 생성완료");
$cellIterator = $oSheet->getRowIterator()->current()->getCellIterator();
$cellIterator->setIterateOnlyExistingCells( true );
/** @var PHPExcel_Cell $cell */
foreach( $cellIterator as $cell ) {
$oSheet->getColumnDimension( $cell->getColumn() )->setAutoSize( true );
}
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header(sprintf('Content-Disposition: attachment;filename="%s_리스트 .xlsx"',date("Ymd")));
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header('Expires: Mon, 26 Jul ');
header('Last-Modified: '.gmdate('D, d M Y'));
header('Cache-Control: cache, must-revalidate');
header('Pragma: public');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
생성완료!