엑셀 업로드 하는데 String index out of range: -1 에러가 발생을 했어요.
개발이라는 게 여러 차례 테스트를 했고 운영을 하던 기능이지만 에러가 발생하는 경우가 있죠. 이번에는 엑셀 업로드를 하는데 동작을 하지 않는 문제가 발생을 했습니다. 다른 프로그램에서 견적서를 엑셀로 다운로드하여서 정리 후 해당 엑셀 파일을 업로드해서 주문하는 방식인데 확인을 해보니 견적서 프로그램이 2가지인데 1가지 프로그램에서 받은 엑셀만 문제가 발생을 합니다.
log를 확인해 보니
String index out of range: -1 에러가 발생을 했는데 substring함수를 통해서 문자열의 길이를 잘라내는 곳에서 잘라낼 변수의 길이가 벗어난 경우 발생을 하는 거였죠.
정상적인 엑셀 파일이고 저장된 파일 형식도 동일한 [Excel 97 - 2003 통합 문서 (*. xls)]인데 다른 엑셀과 뭐가 다른지 이유를 알 수가 없었습니다. 그러다가 2개의 엑셀 파일을 전체 선택 후 복사해서 메모장에 붙여봤는데
좌측이 에러 발생 엑셀, 우측이 에러 없는 엑셀 파일을 전체 선택 후 붙여 넣기 한 메모장인데 네모 안의 커서 위치를 보면 좌측에는 아무 값이 없는 줄(row)이 존재를 하고 우측에는 그런 게 없는 게 확인됩니다. 결국 데이터가 없는 곳에서 문자열을 잘라내려고 하니 문제가 발생을 하고 있었습니다.
그래서 분기 처리를 통해 여백이 있는 경우는 그냥 넘어가도록 수정을 하긴 했는데 문제 발생 시 코딩에서 단순히 처리를 하는 것보다 왜 문제가 발생했는지 원인을 찾고 그 설명을 하는 게 더 어려울 때가 있네요. 게다가 이번처럼 다른 프로그램과 함께 병행해서 사용하는 경우 더 그런 것 같습니다. 흠~