본문 바로가기

프로그래밍

영카트5 주문내역 액셀 다운로드 연동

반응형



기존 영카트의 주문내역출력 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) 끝~

반응형