Library Info
Maven
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
Gradle
// https://mvnrepository.com/artifact/org.apache.poi/poi
compile group: 'org.apache.poi', name: 'poi', version: '4.1.0'
- Apache POI-ooxml (xlsx파일 사용 시 필요)
Maven
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
Gradle
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.0'
As-is
public static Map<String, Set<String>> load(String path) {
if (StringUtils.isEmpty(path)) {
throw new IllegalArgumentException("학교 목록 파일 경로가 지정되지 않았습니다.");
}
Map<String, Set<String>> map = null;
Set<String> set = null;
try {
Workbook workbook = WorkbookFactory.create(new FileInputStream(path));
int rowindex = 0;
int columnindex = 0;
int sheetSize = workbook.getNumberOfSheets();
map = new HashMap<>();
Sheet sheet = null;
Row row = null;
Cell cell = null;
for (int i = 0; i < sheetSize; i++) {
set = new HashSet<>();
sheet = workbook.getSheetAt(i);
int rows = sheet.getPhysicalNumberOfRows();
for (rowindex = 0; rowindex < rows; rowindex++) {
row = sheet.getRow(rowindex);
if (row != null) {
int cells = row.getPhysicalNumberOfCells();
for (columnindex = 0; columnindex <= cells; columnindex++) {
cell = row.getCell(columnindex);
if (cell == null) {
continue;
}
set.add(Optional.ofNullable(cell.getStringCellValue()).orElse(""));
}
}
}
map.put(sheet.getSheetName(), set);
}
}catch(Exception e) {
e.printStackTrace();
}
return map;
}
To-be
public static Map<String, Set<String>> load(String path) {
if (StringUtils.isEmpty(path)) {
throw new IllegalArgumentException("학교 목록 파일 경로가 지정되지 않았습니다.");
}
try {
Workbook workbook = WorkbookFactory.create(new FileInputStream(path));
return IntStream.range(0, workbook.getNumberOfSheets())
.mapToObj(workbook::getSheetAt)
.collect(
Collectors.toMap(
Sheet::getSheetName,
sheet -> IntStream.range(0, sheet.getPhysicalNumberOfRows())
.mapToObj(sheet::getRow)
.filter(Objects::nonNull)
.map(r -> r.getCell(0))
.filter(Objects::nonNull)
.map(c -> Optional.ofNullable(c.getStringCellValue()).orElse(""))
.collect(Collectors.toSet())
)
);
}catch(FileNotFoundException fnfe) {
throw new IllegalArgumentException("학교 목록 파일을 찾을 수 없습니다.");
} catch (IOException ie) {
ie.printStackTrace();
throw new IllegalArgumentException("파일을 읽는 중 오류가 발생하였습니다.");
}
}
'Dev. 참고자료' 카테고리의 다른 글
Ad Tech 알아보기 (0) | 2020.02.11 |
---|---|
[Java/ Intellij] 스트림 디버깅(Stream debugging) 쉽게 하기 (0) | 2019.08.13 |
2019 Alfred 4 upgrade!! (0) | 2019.06.04 |
[intelliJ TIP] mac terminal에서 intelliJ 실행하기 (0) | 2017.06.05 |
Global 환경의 Timezone을 고려한 개발 관련 사항들.. (0) | 2015.09.30 |