제목 | 엑셀 파일 리드 시 엑셀에 빈셀 처리 문제 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 주말생각 | 작성시각 | 2020/11/20 11:36:52 |
|
|||
엑셀 파일의 1열에 각 행들만 읽어서 DB에 테이블과 매칭하여 DB에 저장하는 기능을 구현하고 있습니다. DB에 저장은 잘 되는데, 문제는 엑셀에 빈셀이 있을 경우에는 Undefined offset 오류가 발생합니다. 빈셀 처리를 어떻게 해야하나요? 제 생각으로는 아래 코드의 getUserInfo()에서 뭔가 처리를 해줘야 할 것 같은데...
컨트롤러 //엑셀-DB 유저정보 가져오기 public function getUserInfo() { $szCnt = $this -> getRowCnt(); // 엑셀 파일 행의 개수 for ($i = 1; $i <= $szCnt; $i++) { $m_id = $this -> sheet['cells'][$i][1]; $mInfo[] = $this -> Member_model -> getDbData_where(['m_id' => $m_id], 'm_idx,m_id,m_regi'); } return $mInfo; }
private function getRowCnt() { return sizeof($this -> sheet['cells']); }
|
|||
다음글 | CIBoard 오늘접한 썡초보입니다. (2) | ||
이전글 | pager 질문드립니다. (7) | ||
테러보이
/
2020/11/20 11:38:55 /
추천
0
쉘에 값이 없으면 continue 하면 될듯한데요
|
주말생각
/
2020/11/20 11:50:00 /
추천
0
for문안에 아래와 같은 식으로 작성을 해봤는데 for ($i = 1; $i <= $szCnt; $i++) {
if($this -> sheet['cells'][$i][1] == null){
continue;
}
$m_id = $this -> sheet['cells'][$i][1];
$mInfo[] = $this -> Member_model -> getDbData_where(['m_id' => $m_id], 'm_idx,m_id,m_regi');
}
Undefined offset: 2 에러가 발생하는 것으로 봐서는 getRowCnt()를 수정해야 하는게 아닐까요?
|
PureAni
/
2020/11/20 12:24:56 /
추천
0
엑셀 파일이 어떻게 되어있고, 어디서 에러가 발생하나요? 셀의 중간이 빠져서 그럴 가능성도 있습니다. 총 row가 2개로 나오는데, A1 과 C1이 있고 B1이 없으면 B1 에서 에러가 발생하는 경우도 있습니다. if (isset($this->sheet['cells'][$i][1])) { $m_id = $this -> sheet['cells'][$i][1]; $mInfo[] = $this -> Member_model -> getDbData_where(['m_id' => $m_id], 'm_idx,m_id,m_regi'); } 그리고 Undefined offset: 2 가 정확히 어떤 시점에서 발생하나요? 만약에 if 문에서 뜬다면, if 문 시점에서 없는 offset 을 if 문으로 사용하려고 해서 뜨는 에러입니다. array 의 null 체크는 isset 으로 하시는게 좋습니다. |
한대승(불의회상)
/
2020/11/20 13:23:19 /
추천
0
아래처럼 코드를 수정하시면 될듯 if(!isset($this -> sheet['cells'][$i][1])){ continue; }
|
주말생각
/
2020/11/20 14:08:07 /
추천
0
감사합니다. isset으로 null 체크를 하니 잘 되네요. 이제 엑셀 파일에 DB에 입력되지 않은 회원 계정을 걸러내서 실제 저장되는 수와 엑셀 수를 맞추면은 최종 해결이 될 듯 합니다. |