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

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

QA

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

본문


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

답변을 작성하시기 전에 로그인 해주세요.
전체 129,103 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT