주문내역출력 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 도 넣어봤지만 깨지네요...
혹시 방법이 있으시면 도움 부탁드립니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.