자바에서 엑셀을 읽는 작업을 할 때

.xls은 HSSF

.xlsx는 XSSF

HSSF / XSSF는 각각의 확장자에게만 적용이 되고 둘다 사용하려면 SXSSF를 사용해야 한다.

하지만 SXSSF는 의존성이 강해서 jar가 많이 필요하다기에 사용하지 않았다.

찾아보니 WorkbookFactory라고 poi에 있는 놈을 이용해서 자동으로 사용 가능하게 할 수 있다더라.

(WorkbookFactory는 poi-ooxml에 존재한다)

최초 항목들 선언도 앞에 HSSF, XSSF 없이 그냥

Workbook workbook = null

Sheet sheet = null

Row row = null

Cell cell = null

이렇게만 지정해줘도 사용이 가능하다

받아온 엑셀을 inputstream이나 file에 넣은다음

worbook = WorkbookFactory.create(엑셀파일)

이것만 해주면 엑셀 확장자에 맞는 workbook을 반환해준다.

poi 3.9 기준으로 5가지 타입을 받을 수 있다.

인풋 타입 반환타입
POIFSFileSystem HSSFWorkbook
NPOIFSFileSystem HSSFWorkbook
OPCPackage XSSFWorkbook
InputStream HSSFWorkbook / XSSFWorkbook
File HSSFWorkbook / XSSFWorkbook

이후에는 다른 방법들과 똑같이

sheet = workbook.getSheetAt(인덱스)로 sheet를 읽어오고

cell.getStringValue해서 데이터를 읽어오면 된다.