반응형
기존 영카트의 주문내역출력 Excel "xls" 형식 다운로드의 경우 인코딩 문제가 생겨서 교체하게 되어 공유합니다.
1) PHPExcel 요구사항
PHP version 5.2.0 or higher
PHP extension php_zip enabled *)
PHP extension php_xml enabled
PHP extension php_gd2 enabled (if not compiled in)
2) PHPExcel 다운로드
https://phpexcel.codeplex.com/
영카트가 설치된 곳의 /lib 폴더에 "PHPExcelClasses" 이름의 폴더를 생성합니다.
다운로드 받은 후 압축을 해제하여 "Classes" 폴더안에 있는 파일과 폴더만 새로 만든 폴더에 업로드 합니다.
3) /adm/shop_admin/ 에 orderprintresult.php 파일의 "xls" 관련 부분 중에서
라인 151 ~ 234을 아래 코드로 교체합니다.
/*================================================================================ PHPExcel - https://phpexcel.codeplex.com/ =================================================================================*/ include_once(G5_LIB_PATH.'/PHPExcelClasses/PHPExcel.php'); $objPHPExcel = new PHPExcel(); $worksheet = $objPHPExcel->getActiveSheet(); //액셀 제목 줄 $data = array('우편번호', '주소', '이름', '전화1', '전화2', '상품명', '수량', '선택사항', '배송비', '상품코드', ' 주문번호', '운송장번호', '전하실말씀'); $objPHPExcel->getActiveSheet()->fromArray($data, null, 'A1'); $save_it_id = ''; for($i=1; $row=sql_fetch_array($result); $i++) { if($save_it_id != $row['it_id']) { // 합계금액 계산 $sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price, SUM(ct_qty) as qty from {$g5['g5_shop_cart_table']} where it_id = '{$row['it_id']}' and od_id = '{$row['od_id']}' "; $sum = sql_fetch($sql); switch($row['ct_send_cost']) { case 1: $ct_send_cost = '착불'; break; case 2: $ct_send_cost = '무료'; break; default: $ct_send_cost = '선불'; break; } // 조건부무료 if($row['it_sc_type'] == 2) { $sendcost = get_item_sendcost($row['it_id'], $sum['price'], $sum['qty'], $row['od_id']); if($sendcost == 0) $ct_send_cost = '무료'; } $save_it_id = $row['it_id']; } $colnum =$i+1; //컬럼번호 $objPHPExcel->getActiveSheet()->SetCellValue("A".$colnum, $row['od_b_zip1'].'-'.$row['od_b_zip2']); $objPHPExcel->getActiveSheet()->SetCellValue("B".$colnum, print_address($row['od_b_addr1'], $row ['od_b_addr2'], $row['od_b_addr3'], $row['od_b_addr_jibeon'])); $objPHPExcel->getActiveSheet()->SetCellValue("C".$colnum, $row['od_b_name']); $objPHPExcel->getActiveSheet()->SetCellValue("D".$colnum, ' '.$row['od_b_tel']); $objPHPExcel->getActiveSheet()->SetCellValue("E".$colnum, ' '.$row['od_b_hp']); $objPHPExcel->getActiveSheet()->SetCellValue("F".$colnum, $row['it_name']); $objPHPExcel->getActiveSheet()->SetCellValue("G".$colnum, $row['ct_qty']); $objPHPExcel->getActiveSheet()->SetCellValue("H".$colnum, $row['ct_option']); $objPHPExcel->getActiveSheet()->SetCellValue("I".$colnum, $ct_send_cost); $objPHPExcel->getActiveSheet()->SetCellValue("J".$colnum, ' '.$row['it_id']); $objPHPExcel->getActiveSheet()->SetCellValue("K".$colnum, ' '.$row['od_id']); $objPHPExcel->getActiveSheet()->SetCellValue("L".$colnum, $row['od_invoice']); $objPHPExcel->getActiveSheet()->SetCellValue("M".$colnum, $row['od_memo']); } $objPHPExcel->getActiveSheet()->setTitle('Orderlist'); $objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="orderlist-"'.date("ymd", time()).'".xls\"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
4) 끝~
반응형
'프로그래밍' 카테고리의 다른 글
안드로이드 apk 배포방법 (0) | 2015.10.03 |
---|---|
이클립스 폰트, 글꼴 변경하는 방법 (0) | 2015.09.14 |
루아(Lua), 에디트플러스에 설정하는 방법 (0) | 2014.10.27 |
루아(Lua) 개발 환경 설정, Corona SDK (0) | 2014.10.24 |
AVD com.android.ddmlib.SyncException: No such file or directory 에러 (0) | 2014.07.24 |