엑셀 업로드 하는데 String index out of range: -1 에러가 발생을 했어요.

이 블로그의 모든 콘텐츠들은 저의 저작물이며 출처, 저자를 밝히지 않고 이루어지는
퍼가기, 복제등의 행위와 상업적 이용을 금하며 필요시 별도로 연락을 주시기 바랍니다.




뭐.. 개발이라는게 여러 차례 테스트를 했고 운영을 하던 기능이지만
에러가 발생하는 경우가 있죠.

엑셀 업로드를 하는데 동작을 하지 않는 문제가 발생을 했습니다.
다른 프로그램에서 견적서를 엑셀로 다운 받아서 정리 후
해당 엑셀 파일을 업로드 해서 주문하는 방식인데
확인을 해보니 견적서 프로그램이 2가지인데
1가지 프로그램에서 받은 엑셀만 문제가 발생을 합니다.

log를 확인 해 보니
String index out of range: -1 에러가 발생을 했는데
substring함수를 통해서 문자열의 길이를 잘라내는 곳에서 
잘라낼 변수의 길이가 벗어난 경우 발생을 하는 거였죠.

정상적인 엑셀 파일이고 저장 된 파일 형식도 동일한 [Excel 97 - 2003 통합 문서 (*.xls)] 인데
다른 엑셀과 뭐가 다른지 이유를 알 수가 없었습니다.

그러다가 2개의 엑셀 파일을 전체 선택 후 복사해서 메모장에 붙여봤는데


좌측이 에러 발생 엑셀, 우측이 에러 없는 엑셀 파일을 전체 선택 후 붙여넣기 한 메모장인데
네모안의 커서 위치를 보면 좌측에는 아무 값이 없는 줄(row)이 존재를 하고
우측에는 그런게 없는게 확인이 됩니다.

결국 데이터가 없는 곳에서 문자열을 잘라내려고 하니 문제가 발생을 하고 있었습니다.

그래서 분기 처리를 통해 여백이 있는 경우는 그냥 넘어가도록 수정을 하긴 했는데
문제 발생시 코딩에서 단순히 처리를 하는 것보다
왜 문제가 발생했는지 원인을 찾고 그 설명을 하는게 더 어려울때가 있네요.
게다가 이번처럼 다른 프로그램과 함께 병행해서 사용하는 경우 더 그런 것 같아요.

티스토리 툴바