채택완료

주문내역출력 orderprintresult.php에서 엑셀 다운로드시 한글 깨짐 문의

Copy
if ($csv == 'csv'){    $fr_date = date_conv($fr_date);    $to_date = date_conv($to_date);     $sql = " SELECT a.od_id, od_b_zip1, od_b_zip2, od_b_addr1, od_b_addr2, od_b_addr3, od_b_addr_jibeon, od_b_name, od_b_tel, od_b_hp, b.it_name, ct_qty, b.it_id, a.od_id, od_memo, od_invoice, b.ct_option, b.ct_send_cost, b.it_sc_type               FROM {$g5['g5_shop_order_table']} a, {$g5['g5_shop_cart_table']} b              where a.od_id = b.od_id ";    if ($case == 1) // 출력기간        $sql .= " and a.od_time between '$fr_date 00:00:00' and '$to_date 23:59:59' ";    else // 주문번호구간        $sql .= " and a.od_id between '$fr_od_id' and '$to_od_id' ";    if ($ct_status)        $sql .= " and b.ct_status = '$ct_status' ";    $sql .="  order by od_time asc, b.it_id, b.io_type, b.ct_id ";    $result = sql_query($sql);    $cnt = @mysql_num_rows($result);    if (!$cnt)        alert("출력할 내역이 없습니다.");    /*================================================================================    php_writeexcel http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/    =================================================================================*/    include_once(G5_LIB_PATH.'/Excel/php_writeexcel/class.writeexcel_workbook.inc.php');    include_once(G5_LIB_PATH.'/Excel/php_writeexcel/class.writeexcel_worksheet.inc.php');    $fname = tempnam(G5_DATA_PATH, "tmp-orderlist.xls");    $workbook = new writeexcel_workbook($fname);    $worksheet = $workbook->addworksheet();    // Put Excel data    $data = array('묶음번호', '송장번호', '업체주문번호\r\n(지마켓체결번호)', '전자상거래구분', '통관지정업체지정번호', '일반/목록', '발송자 성명(영어)', '발송자 영문주소', '발송자 전화번호', '수취인 성명(한글)', '주민등록번호(일반통관시필수}', '우편번호', '주소', '일반전화\r\n(없을시휴대전화기입)', '핸드폰', '무게(lbs)', '박스갯수', '배송시요청사항\r\n(한국현대택배)', '작업시요청사항\r\n(미국현대택배)', '상품명', '브랜드', '사이즈(식품,영양제등)', '색상', '수량', '단가', '표준품명', '관세발생시 부담', '상품이미지', '상품 URL', '오더번호', 'SHIPPING NAME', '고객아이디', '개인사서함번호', '배송사', 'TRACKING#' );    $data = array_map('iconv_euckr', $data);    $col = 0;    foreach($data as $cell) {        $worksheet->write(0, $col++, $cell);    }    $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'];            $ct_send_cost = iconv_euckr($ct_send_cost);        }        $row = array_map('iconv_euckr', $row);        $worksheet->write($i, 0, '');        $worksheet->write($i, 1, '');        $worksheet->write($i, 2, '');        $worksheet->write($i, 3, 'A');        $worksheet->write($i, 4, '');        $worksheet->write($i, 5, '목록통관');        $worksheet->write($i, 6, 'NEXTGENBOWLING INC. (WWW.NEXTGENBOWLING.COM)');        $worksheet->write($i, 7, '9110 UNION PARK WAY SUITE 100, ELK GROVE CA 95624');        $worksheet->write($i, 8, '209-471-2149');        $worksheet->write($i, 9, $row['od_b_name']);        $worksheet->write($i, 10, '');        $worksheet->write($i, 11, ' '.$row['od_b_zip1'].$row['od_b_zip2']);        $worksheet->write($i, 12, print_address($row['od_b_addr1'], $row['od_b_addr2'], $row['od_b_addr3'], $row['od_b_addr_jibeon']));  $worksheet->write($i, 13, ' '.$row['od_b_hp']);  $worksheet->write($i, 14, ' '.$row['od_b_hp']);  $worksheet->write($i, 15, '');  $worksheet->write($i, 16, '1');  $worksheet->write($i, 17, $row['od_memo']);  $worksheet->write($i, 18, '');  $worksheet->write($i, 19, $row['it_name']);  $worksheet->write($i, 20, '');  $worksheet->write($i, 21, '');  $worksheet->write($i, 22, '');  $worksheet->write($i, 23, $row['ct_qty']);  $worksheet->write($i, 24, $row['ct_price']);  $worksheet->write($i, 25, '기타스포츠용품');  $worksheet->write($i, 26, '수취인');  $worksheet->write($i, 27, '');  $worksheet->write($i, 28, '');  $worksheet->write($i, 29, '');  $worksheet->write($i, 30, '');  $worksheet->write($i, 31, '');  $worksheet->write($i, 32, '');  $worksheet->write($i, 33, '');  $worksheet->write($i, 34, '');      }    $workbook->close(); header("Content-Type: application/x-msexcel; name=\"Hyundai_orderlist-".date("ymd", time()).".xls\"");    header("Content-Disposition: inline; filename=\"Hyundai_orderlist-".date("ymd", time()).".xls\"");    $fh=fopen($fname, "rb");    fpassthru($fh);    unlink($fname);    exit;}

 

변환되서 나오는 sheet 자체를 필요에 맞게 수정을했습니다.

 

엑셀로 다운로드시 $data = array 로 지정한 제목부분과 $row를 통해서 호출하는 한글은

 

전부 정상적으로 표시가 되고 있습니다...

 

$worksheet->write($i, 5, '목록통관');

$worksheet->write($i, 25, '기타스포츠용품');
$worksheet->write($i, 26, '수취인');

 

이 3개 항목에 대해서만 한글로 표시가 되지 않고 깨져요

 

header("Content-Type: application/x-msexcel; name=\"Hyundai_orderlist-".date("ymd", time()).".xls\"");

 

이부분에 charset 도 넣어봤지만 깨지네요...

 

혹시 방법이 있으시면 도움 부탁드립니다. 

|

답변 1개

채택된 답변
+20 포인트

한글의 경우 아래코드처럼 euc-kr 로 변환해 주셔야 합니다.

 

Copy
$worksheet->write($i, 5, iconv_euckr('목록통관'));

답변을 작성하려면 로그인이 필요합니다.