반응형
기존 영카트의 주문내역출력 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 |