1. Import
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
2. 엑셀 파일 경로 셋팅
파싱할 파일의 절대 경로나 같은 프로젝트에서 상대 경로로 셋팅한다.
String filePath = "C:\\Users\\...";
3. 파일 읽기
FileInputStream file = new FileInputStream(filePath);
XSSFWorkbook workbook = new XSSFWorkbook(file);
4. 엑셀 탭 가져오기
getSheetAt(index) : 가져올 탭의 index 지정
XSSFSheet sheet = workbook.getSheetAt(1);
5. 각 행과 열을 돌면서 데이터 가져오기
행과 열을 돌면서 데이터를 타입별로 가져온다.
이부분에서 파싱하려는 목적에 따라 소스를 수정하면 된다.
int rows = sheet.getPhysicalNumberOfRows();
for (rowindex = 0; rowindex < rows; rowindex++) {
XSSFRow row = sheet.getRow(rowindex);
if (row != null) {
int cells = row.getPhysicalNumberOfCells();
for (columnindex = 0; columnindex <= cells; columnindex++) {
XSSFCell cell = row.getCell(columnindex);
String value = "";
if (cell == null) {
continue;
} else {
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_FORMULA:
value = cell.getCellFormula();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
value = cell.getNumericCellValue() + "";
break;
case XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue() + "";
break;
case XSSFCell.CELL_TYPE_BLANK:
value = cell.getBooleanCellValue() + "";
break;
case XSSFCell.CELL_TYPE_ERROR:
value = cell.getErrorCellValue() + "";
break;
}
}
System.out.println(rowindex + "번 행 : " + columnindex + "번 열 값은: " + value);
}
}
6. 전체 코드
String filePath = "file path";
try {
FileInputStream file = new FileInputStream(filePath);
XSSFWorkbook workbook = new XSSFWorkbook(file);
int rowindex = 0;
int columnindex = 0;
XSSFSheet sheet = workbook.getSheetAt(1);
int rows = sheet.getPhysicalNumberOfRows();
for (rowindex = 0; rowindex < rows; rowindex++) {
XSSFRow row = sheet.getRow(rowindex);
if (row != null) {
int cells = row.getPhysicalNumberOfCells();
for (columnindex = 0; columnindex <= cells; columnindex++) {
XSSFCell cell = row.getCell(columnindex);
String value = "";
if (cell == null) {
continue;
} else {
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_FORMULA:
value = cell.getCellFormula();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
value = cell.getNumericCellValue() + "";
break;
case XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue() + "";
break;
case XSSFCell.CELL_TYPE_BLANK:
value = cell.getBooleanCellValue() + "";
break;
case XSSFCell.CELL_TYPE_ERROR:
value = cell.getErrorCellValue() + "";
break;
}
}
System.out.println(rowindex + "번 행 : " + columnindex + "번 열 값은: " + value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
'Java' 카테고리의 다른 글
Builder pattern @Builder (0) | 2022.06.29 |
---|---|
The constructor JsonParser() is deprecated (0) | 2022.03.02 |
싱글톤 패턴 (Singleton Pattern) (0) | 2021.11.25 |