영카트 엑셀

영카트 엑셀

QA

영카트 엑셀

본문

엑셀로 상품업로드 하는거 잘되던데요

 

 g5_shop_item테이블에 필드를 추가하여 

업데이트 파일과 똑같이

 

        $seller_cids             = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $stuff_status             = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $location_state           = addslashes($data->sheets[0]['cells'][$i][$j++]);

 

                         seller_cids = '$seller_cids',
                         stuff_status = '$stuff_status',
                         location_state = '$location_state', 이런식으로 위치에 넣어주고

 

 

샘플엑셀 우측 끝 열에 테이터를 넣고 올리면 등록이 안되네요..

도데체 왜그럴까요? 3라인부터 인식하는거 같던데

 

상품코드 기본분류 분류2 분류3 상품명 제조사 원산지

 

2라인의 이 설명을 삭제하지 마라는데 그래서 삭제안하고 끝에 데이터만 넣어서 올려도 안되구요,,

2라인 제목을 바꿔도 안된느거 같구요

다른 파일하고 무슨 관계가 있나요?

왜 안되는지....이거 땜에 짜증나서 꼬박세웠네요,,,ㅠㅠ

 

 

이 질문에 댓글 쓰기 :

답변 3

for ($i = 2 ; $i <= $maxRow ; $i++){ // 2열부터면 2부터 시작, 3열부터면 3

    $data = array();
    $data['변수1'] = $objWorksheet->getCell('A'.$i)->getValue();
    $data['변수2'] = $objWorksheet->getCell('B'.$i)->getValue();
    $data['변수3'] = $objWorksheet->getCell('C'.$i)->getValue();

 

    $list[] = $data;

}

for($i = 0; $i < count($list); $i++){

    sql_query("insert into ert into 테이블명 
              필드1 = '".$list[$i]['변수1']."', 

              필드2 = '".$list[$i]['변수2']."', 

              필드3 = '".$list[$i]['변수3']."', 

이런 방식으로 for 문 안에 이런식으로

원래 있는 for문안에 같은 형태로 넣어주었는데요,,,
    for ($i = 3; $i <= $data->sheets[0]['numRows']; $i++) {
        $total_count++;

        $j = 1;

        $it_id              = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $ca_id              = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $ca_id2            = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $ca_id3            = addslashes($data->sheets[0]['cells'][$i][$j++]);

        $seller_cids            = addslashes($data->sheets[0]['cells'][$i][$j++]);
$stuff_status            = addslashes($data->sheets[0]['cells'][$i][$j++]);
$location_state          = addslashes($data->sheets[0]['cells'][$i][$j++]);

새로 추가하는 필드는 알려주신대로 또 for문을 돌려야 한다는 말씀이신가요?

저는 포문을 2번 돌렸습니다.
엑셀의 내용을 정의하고 배열로 만든 후에 그걸 다시 포문으로 해서 DB insert 시킨거죠..
여기서 좀더 확장형(?) 이라 하면 저 배열을 만들때 값이 존재 할경우에만 해버리시면 엑셀 작업을 잘못했을경우 빈값으로 간주시킬수 있겠지요?

for ($i = 3; $i <= $data->sheets[0]['numRows']; $i++) {
        $total_count++;
        $data = array();

        $j = 1;

        $data['it_id']              = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $data['ca_id']              = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $data['ca_id2']            = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $data['ca_id3']            = addslashes($data->sheets[0]['cells'][$i][$j++]);

        $data['seller_cids']            = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $data['stuff_status']            = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $data['location_state']          = addslashes($data->sheets[0]['cells'][$i][$j++]);

        $list[] = $data;
    }
이러게 할경우 $list 라는 배열에 저 $data라는 값들이 담깁니다.
그럼

for($i = 0; $i < count($list); $i++){

    sql_query("insert into ert into 테이블명
              it_id = '".$list[$i]['it_id]."',
              ca_id= '".$list[$i]['ca_id']."',
              ca_id2= '".$list[$i]['ca_id2']."',
              ca_id3= '".$list[$i]['ca_id3']."',
              seller_cids = '".$list[$i]['seller_cids']."',
}

이런식으로 하면 원하는 필드에 원하는 값을 넣으실수 있으실겁니다.
기존 방식을 추구하셔도 되지만 문제가 발생된다면 원본은 백업 해두고 새롭게만드시는것도 하나의방법입니다.
이걸 붙들고 있는다고 해결되는건 아닐지도 모르니깐요....

엑셀파일의 확장자 형식이 어떻게 될까요? xlsx 형식이라면 이걸 다른이름으로 저장하셔서 2003~2007 형식변환 해서 xls로 올리면 되는지 테스트 해보셔야 할듯 합니다.

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

회원로그인

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