dataformat : [ { col : 0, format : "yyyy-mm-dd" }, { col : 1, format : "yyyy/mm/dd" }, { col : 2, format : "mm-dd" }, { col : 3, format : "mm/dd" } ]
function loadExcel(id){ var objLoadExcel = { formid : "loadExcelForm", action : "/SBExcelLoad.do", fileinputid : id }; datagrid1.importExcel(objLoadExcel); }
//제품 구매시 제공된 jar파일 필요 protected void SBExcelLoad(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MultipartRequest multi = null; ServletContext context = request.getSession().getServletContext(); String realPath = context.getRealPath("/"); File f = new File(realPath + "kr\\softbowl"); if(!f.isDirectory()) { if(f.mkdirs()){ System.out.println("Directory Make !"); } } int maxPostSize = 1000 * 1024 * 1024; // 1024MB로 설정 if (-1 != System.getProperty("os.name").indexOf("Window")) { multi = new MultipartRequest(request, realPath + "kr\\softbowl", maxPostSize); }else{ multi = new MultipartRequest(request, realPath + "/kr/softbowl", maxPostSize); } JSONArray arrGridData = new JSONArray(); JSONParser JSONdataParser = new JSONParser(); try { String strFileInputName = multi.getParameter("SBHE___SB_FileInputName"); String strTargetGrid = multi.getParameter("SBHE___SB_SBGridID"); int nFixedRows = Integer.parseInt(multi.getParameter("SBHE___SB_FixedRows")); int nFixedCols = Integer.parseInt(multi.getParameter("SBHE___SB_FixedCols")); JSONArray arrRefs = (JSONArray)(JSONdataParser.parse(multi.getParameter("SBHE___SB_Refs"))); String objDataFormat = multi.getParameter("SBHE___SB_ObjDataFormat") == null ? "" : multi.getParameter("SBHE___SB_ObjDataFormat").toString(); JSONArray arrDataFormat = new JSONArray(); if(objDataFormat != "") { arrDataFormat = (JSONArray)(JSONdataParser.parse(objDataFormat)); } String strDataType = multi.getParameter("SBHE___SB_DataType"); String strGridRef = multi.getParameter("SBHE___SB_Ref"); multi.getFilesystemName("excel"); File fExcel = multi.getFile(strFileInputName); //대용량 엑셀 파일 업로드 가능하도록 SBLoadExcel class 사용 System.out.println("Creating JSON DATA was Started."); SBLoadExcel loadExcel = new SBLoadExcel(arrRefs, nFixedRows, nFixedCols, arrDataFormat); //SBLoadExcel(읽지 않을 캡션 행의 수, ref값들의 배열) loadExcel.read(fExcel); //읽어들여 parsing arrGridData = loadExcel.getGridData(); //읽어들인 DATA를 JSONArray 타입으로 반환 System.out.println("Grid's Row DATA Count:" + arrGridData.size()); System.out.println("Grid's Row DATA:" + arrGridData.toString()); System.out.println("Creating JSON DATA was completed."); StringBuffer strHTML = new StringBuffer(); strHTML.append("<!DOCTYPE html><html><head><meta charset=\"UTF-8\"/><script type='text/javascript'>"); strHTML.append("eval(\"var arrGridData = parent." + strGridRef + ";\");"); strHTML.append("while(arrGridData.length){arrGridData.pop();}"); sendResult(response, strHTML.toString(), "text/html", false); strHTML.delete(0, strHTML.length()); //flush된 StringBuffer 초기화 for(int i = 1, nRowCount = arrGridData.size() ; i <= nRowCount ; i++) { strHTML.append("arrGridData.push(" + arrGridData.get(i - 1).toString() + ");"); if(i % 2000 == 0){ sendResult(response, strHTML.toString(), "text/html", false); strHTML.delete(0, strHTML.length()); //flush된 StringBuffer 초기화 } } strHTML.append("eval(\"parent." + strTargetGrid + ".refresh();\");"); strHTML.append("eval(\"parent." + strTargetGrid + ".dispatch('afterimportexcel');\");"); strHTML.append("</script></head></html>"); sendResult(response, strHTML.toString(), "text/html;", true); strHTML.delete(0, strHTML.length()); //flush된 StringBuffer 초기화 fExcel.delete(); } catch (Exception e) { e.printStackTrace(); } finally { arrGridData.clear(); } } public void sendResult(HttpServletResponse response, String strRes, String strContentsType, boolean bIsClosed){ response.setContentType(strContentsType); response.setCharacterEncoding("UTF-8"); PrintWriter objWriter = null; try{ objWriter = response.getWriter(); objWriter.print(strRes); } catch (IOException e){ e.printStackTrace(); }finally{ if (null != objWriter){ objWriter.flush(); if(bIsClosed){ objWriter.close(); } } } }