영카트 주문엑셀출력 문의

영카트 주문엑셀출력 문의

QA

영카트 주문엑셀출력 문의

본문

안녕하세요

 

영카트 기본소스 어드민페이지에서

 

쇼핑몰현황/기타에 있는

 

주문내역 출력이라는 기능을 사용해서 주문내역 엑셀을 출력하는데

 

xls 엑셀파일을 출력해서 윈도우 엑셀 프로그램에서 봤을때

 

셀 크기가 일정한데 더길게 할수있을까요?

주소 같은경우 길이가 긴데 셀크기가 작아서 출력할때마다 늘려야해서 좀 번거로운데

 

엑셀 받았을때부터 길이가 늘려져있으면 편할꺼같아서요

 

답변 좀 부탁드립니다.

 

 

--------

 

// MS엑셀 XLS 데이터로 다운로드 받음 


    $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 "; 
    $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("출력할 내역이 없습니다."); 


    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('우편번호', '주소', '이름', '전화1', '전화2', '상품명', '수량', '선택사항', '배송비', '상품코드', '주문번호', '운송장번호', '전하실말씀'); 
    $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, $row['od_b_zip1'].'-'.$row['od_b_zip2']); 
        $worksheet->write($i, 1, print_address($row['od_b_addr1'], $row['od_b_addr2'], $row['od_b_addr3'], $row['od_b_addr_jibeon'])); 
        $worksheet->write($i, 2, $row['od_b_name']); 
        $worksheet->write($i, 3, ' '.$row['od_b_tel']); 
        $worksheet->write($i, 4, ' '.$row['od_b_hp']); 
        $worksheet->write($i, 5, $row['it_name']); 
        $worksheet->write($i, 6, $row['ct_qty']); 
        $worksheet->write($i, 7, $row['ct_option']); 
        $worksheet->write($i, 8, $ct_send_cost); 
        $worksheet->write($i, 9, ' '.$row['it_id']); 
        $worksheet->write($i, 10, ' '.$row['od_id']); 
        $worksheet->write($i, 11, $row['od_invoice']); 
        $worksheet->write($i, 12, $row['od_memo']); 
    } 

    $workbook->close(); 

    header("Content-Type: application/x-msexcel; name=\"orderlist-".date("ymd", time()).".xls\""); 
    header("Content-Disposition: inline; filename=\"orderlist-".date("ymd", time()).".xls\""); 
    $fh=fopen($fname, "rb"); 
    fpassthru($fh); 
    unlink($fname); 

    exit; 

?> 

소스가 이런식으로 되있는데 어떻게 수정을 하면 될까요? 

이 질문에 댓글 쓰기 :

답변 1


    $fname = tempnam(G5_DATA_PATH, "tmp-orderlist.xls");
    $workbook = new writeexcel_workbook($fname);
    $worksheet = $workbook->addworksheet();
    $worksheet->set_column(1,1, 50); ​ // 추가된 라인

 

set_column함수를 이용하시면 됩니다.

 

1,1,50 은 주소 컬럼이 있는 2번째 가로 폭을 50으로 한다.

 

첫번째와 두번째는

 

0,1,50 으로 하면 A,B컬럼의 가로 폭이 50으로 됩니다.

0,3,50으로 하면 A,B,C ...

 

매번 빠르고 친절한 답변 감사합니다.
저 혹시 엑셀 다운받아서 실행했을때 창 크기도 조절할수있을까요
저 소스로 열었을때는 창이 너무 작게 열려서 켤때마다 창을 늘려줘야되더군요.

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

회원로그인

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