티스토리 뷰
나중에 참고하기 위해 기록을 해본다.
프로젝트에 필요한 데이터를 확보하는데 한 군데에서 구하지 못하고 여기저기 긁어 모아야했다.
처음에 모든 데이터가 담긴 엑셀 파일을 DB에 저장하려고 했다가 방법이 바뀌게 됐다.
엑셀 파일을 읽는 것 까지 성공했고 DB에 insert하는 것은 해보지 못하고 다른 방식으로 저장하게 되어서 다음에 이 방법을 시도해보고 싶다.
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component //빈으로 등록
public class ExcelReadController {
private static final Logger logger = LoggerFactory.getLogger(ExcelReadController.class);
private List<String> excelData = new ArrayList<>();
@Scheduled(fixedRate = 60000) // 60초마다 실행
public void readExcelFiles() {
ClassPathResource resource = new ClassPathResource("excel/example.xlsx");
try (InputStream is = resource.getInputStream()) {
Workbook workbook = WorkbookFactory.create(is);
processWorkbook(workbook);
} catch (IOException e) {
logger.error("Error reading Excel file", e);
}
}
private void processWorkbook(Workbook workbook) {
// 엑셀 파일을 처리하는 로직
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
String cellValue = getCellValue(cell);
excelData.add(cellValue);
logger.info("Cell Value: {}", cellValue);
}
}
}
private String getCellValue(Cell cell) {
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue().toString();
} else {
return String.valueOf(cell.getNumericCellValue());
}
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
case FORMULA:
return cell.getCellFormula();
case BLANK:
return "";
default:
return "Unknown Cell Type";
}
}
public List<String> getExcelData() {
return new ArrayList<>(excelData);
}
}
@Autowired
private ExcelReadController excelReadController;
@Autowired
private CategoryRepository categoryRepository;
//@Test
public void testReadExcelFiles() {
excelReadController.readExcelFiles(); // 직접 호출하여 읽기
List<String> excelData = excelReadController.getExcelData();
assertNotNull(excelData, "Excel data should not be null");
assertFalse(excelData.isEmpty(), "Excel data should not be empty");
for (String data : excelData) {
System.out.println("Excel Data: " + data);
}
}
=> 테스트로 실행해서 콘솔에 읽히는 것 까지 확인
'JAVA' 카테고리의 다른 글
JPA고급매핑 - 복합키 (0) | 2024.08.20 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- useState
- 노마드
- props
- NPM
- 리액트네이티브
- 티스토리챌린지
- Async
- ReactJS
- 자바스크립트
- React
- nomard
- 프로그래머스
- 오블완
- CLI
- create react app
- overloading
- 재귀함수
- splice
- 오버로딩
- 카카오로그인
- await
- Cleanup
- 타입스크립트
- ts
- TypeScript
- 프로젝트회고록
- useEffect
- slice
- 챌린지1일차
- 리액트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함