jsp에서 엑셀데이터를 받아 디비에 저장[java]
jsp상에서 디비에 밀어넣을 엑셀파일의 url을 얻고(input type="file"을 이용해서) action단으로 가면
-------------------java소스---------------------------------
Workbook workbook = null;
Sheet sheet = null;
File file = new File(request.getParameter("fileurl"));
String yyyymmdd = request.getParameter("yyyymmdd");
String[][] excelData = null;
try{
workbook = Workbook.getWorkbook(file); //파일경로의 엑셀파일정보를 얻어오고
sheet = workbook.getSheet(0); //0번째 시트의 정보를 sheet에 넣고
int rowCount = sheet.getRows(); //총 로우수
int colCount = sheet.getColumns(); //총 열의 수
if(rowCount <= 0) throw new Exception("읽을 데이터가 엑셀에 없습니다.");
excelData = new String[rowCount][colCount];
ArrayList list = new ArrayList();
AddressDTO addressDTO = new AddressDTO(); //입력파라메터를 담을 빈파일
//엑셀데이터를 배열에 저장
//엑셀시트7번째줄부터 데이타가 들어가도록 설정했기때문에 i는 6부터 for문을 돌린다.
for(int i = 6 ; i < rowCount ; i++) {
addressDTO = new AddressDTO();
for(int k = 0 ; k < colCount ; k++) {
Cell cell =sheet.getCell(k, i); // 해당위치의 셀을 가져오는 부분
if(cell != null) {
//첫번째 셀에 데이타가없으면 for문을 종료하기위한 값을 넣는다.
if(k ==0 && cell.getContents().equals("")){
i = rowCount;
k = colCount;
}else{
//빈파일에 값담기
//해당행(i)의 열값(k)을 담는다
if(k == 0) addressDTO.setName(cell.getContents());
if(k == 1) addressDTO.setEmail(cell.getContents());
if(k == 2) addressDTO.setMobile(cell.getContents());
if(k == 3) addressDTO.setTel(cell.getContents());
if(k == 4) addressDTO.setSosok(cell.getContents());
if(k == 5) addressDTO.setRelation(cell.getContents());
}
}
}
//한 라인for문이 끝날때마다 인서트처리(한줄씩 인서트)
scheduleBSO.insertAddress(addressDTO);
}