써먹는 웹개발
[Java]엑셀 업로드 본문
1. Js 소스 (엑셀 업로드 버튼 함수)
fnImp_pop = function() { var data = new FormData(); var $grid = $("#gridCustPri"); var d = { getDetail: $grid.getRowData() }; if ($("#excelFile")[0].files.length == 0) { alert("선택된 파일이 없습니다."); return; } $.each($("#excelFile")[0].files, function(i, file) { data.append('file-' + i, file); }); for(var i=0;i<$("#gridCustPri").getDataIDs().length;i++){ $("#gridCustPri").jqGrid('saveRow',$("#gridCustPri").getDataIDs()[i]); } $.ajax({ url: $HOST + "/excelMenuGrp", type: "POST", data: data, processData: false, contentType: false, success: function(result) { var cnt; // console.log(JSON.stringify(result)[0].itemCd); // return; // 기존 데이터와 엑셀 데이터 비교 for(var i=0;i<$("#gridCustPri").getDataIDs().length;i++){ cnt = 0; for(var j=0;j<result.length;j++){ if($("#gridCustPri").getDataIDs()[i] == result[j].itemCd.toString()){ cnt++; } } if(cnt != 1){ alert("엑셀의 L5/UPN 값을 수정하면 안됩니다."); var ids = $("#gridCustPri").jqGrid('getDataIDs');
// 거래처 공급 단가 input for(i=0; i< ids.length; i++){ $("#gridCustPri").jqGrid('editRow', ids[i], false); } return; } if($("#gridCustPri").getRowData()[i].date != result[i].date.toString()){ alert("엑셀의 최근 수정일을 수정하면 안됩니다."); var ids = $("#gridCustPri").jqGrid('getDataIDs');
// 거래처 공급 단가 input for(i=0; i< ids.length; i++){ $("#gridCustPri").jqGrid('editRow', ids[i], false); } return; } } $("#gridCustPri").clearGridData().setGridParam({ datatype:"local" , data: result , rowNum: result.length }).trigger('reloadGrid'); } }); }; |
2. Java 소스
@RequestMapping(value = "/excelMenuGrp", method = {RequestMethod.POST}) @ResponseBody public List<Map<String, Object>> insertorderitem(MultipartHttpServletRequest request) throws Exception{ String originalFileName = null; String originalFileExtension = null; Iterator<String> itr = request.getFileNames();
MultipartFile file = request.getFile(itr.next()); if(file==null || file.isEmpty()){ throw new RuntimeException("엑셀파일을 선택해 주세요"); }
originalFileName = file.getOriginalFilename(); originalFileExtension = originalFileName.substring(originalFileName.lastIndexOf(".")); File destFile = File.createTempFile(StringUtil.getRandomString(), originalFileExtension); System.out.println("destFile : " +destFile);
try { file.transferTo(destFile); } catch (IllegalStateException | IOException e) { throw new RuntimeException(e.getMessage(),e); }
//return service.insertorderitem(destFile); ReadOption readOption = new ReadOption(); readOption.setFilePath(destFile.getAbsolutePath()); readOption.setOutputColumns("A","B","C","D","E"); readOption.setStartRow(2); List<Map<String, String>> excelContent = ExcelRead.read(readOption); List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
for(Map<String, String> article : excelContent){ Map<String, Object> map = new HashMap<String, Object>(); map.put("itemCd", article.get("A")); map.put("itemNm", article.get("B")); map.put("price", article.get("C")); map.put("custPri", article.get("D")); map.put("date", article.get("E"));
result.add(map); }
return result; } |
'웹개발 > Java & Jsp' 카테고리의 다른 글
billboard.js 예제있는 주소 (0) | 2018.04.30 |
---|---|
문자열을 배열화시키는 방법 (가변 배열 만들수 있음) (0) | 2018.04.26 |
맵 가져오는 방법 (0) | 2018.04.24 |
[Java]엑셀 다운로드 (0) | 2018.04.16 |
맵 데이터의 키값을 각 형식으로 변경하는 방법 (0) | 2018.03.10 |