导入excle数据将excle数据插入到数据库

前端之家收集整理的这篇文章主要介绍了导入excle数据将excle数据插入到数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

实现功能是,用户可以直接导入对应数据,或者用户下载模板,填写数据,导入模板数据。easyui实现

 

前台页面

'日清导入''icon-print''#import').dialog('open' }</span></pre>
draggable= align="center" class="easyui-dialog" closed= style="width: 400px">
> 上传:> </tr&gt; <tr&gt; <td align ="center" colspan="2"&gt;<a id="download" <span style="color: #339966;"&gt;href="<%=basePath %>import_template/template-dayrecruit.xls"</span> class="easyui-linkbutton" >模板下载</a>&amp;nbsp;&amp;nbsp;&amp;nbsp; <a id="upload" class="easyui-linkbutton"&gt;上传</a>&amp;nbsp;&amp;nbsp;&amp;nbsp; <a id="importCancel" class="easyui-linkbutton"&gt;取消</a>&amp;nbsp;&amp;nbsp;</td&gt; </tr&gt; </table&gt; </form> </div></pre>

以上代码加颜色的是特别注意的点。上传文件一定加这些声明,否则不可实现。点击模板下载可以直接在我们根路径下找到模板,并下载。

具体的后台代码是:

@RequestMapping(value = "/imp",method = RequestMethod.POST,produces = "text/html;charset=UTF-8"文件形式接收上传数据 HttpServletRequest request,HttpSession session) throws Exception {
Account account </span>= <span style="color: #0000ff;"&gt;this</span><span style="color: #000000;"&gt;.getStaticAccount();
</span><span style="color: #0000ff;"&gt;if</span> (myFile == <span style="color: #0000ff;"&gt;null</span> || myFile.getSize() == 0<span style="color: #000000;"&gt;) {
    </span><span style="color: #0000ff;"&gt;return</span> "未选择任何<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>,请选择<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>后<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>!"<span style="color: #000000;"&gt;;
}
String fileType </span>=<span style="color: #000000;"&gt; myFile.getOriginalFilename().substring(
        myFile.getOriginalFilename().lastIndexOf(</span>"."<span style="color: #000000;"&gt;));
</span><span style="color: #0000ff;"&gt;if</span> (!fileType.equals(".xls") &amp;&amp; !fileType.equals(".xlsx"<span style="color: #000000;"&gt;)) {
    </span><span style="color: #0000ff;"&gt;return</span> "<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>格式<a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a>,请<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>.xls或.xlsx格式<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>!"<span style="color: #000000;"&gt;;
}
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;String path = CommonsMethod.getProjectPath() ;</span>
String path=<span style="color: #000000;"&gt;request.getSession()
        .getServletContext().getRealPath(</span>"/"<span style="color: #000000;"&gt;)
        </span>+ "/importReserveExcel/"<span style="color: #000000;"&gt;;
String fileattr </span>=<span style="color: #000000;"&gt; CommonsMethod.getNowCorrect2Millisecond()
        </span>+<span style="color: #000000;"&gt; myFile.getOriginalFilename().substring(
                myFile.getOriginalFilename().lastIndexOf(</span>"."<span style="color: #000000;"&gt;));
final File targetFile </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; File(path,fileattr);
</span><span style="color: #0000ff;"&gt;if</span> (!<span style="color: #000000;"&gt;targetFile.exists()) {
    targetFile.mkdirs();
}
</span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
    myFile.transferTo(targetFile);
} </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IllegalStateException e) {
    e.printStackTrace();
} </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
    e.printStackTrace();
}

ArrayList</span><Object> dataList = <span style="color: #0000ff;"&gt;new</span> ArrayList<Object><span style="color: #000000;"&gt;();
</span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
    dataList </span>=<span style="color: #000000;"&gt; dayRecruitService.<span style="color: #339966;"&gt;readExcel</span>(
            targetFile.getAbsolutePath(),</span>4<span style="color: #000000;"&gt;);
} </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (Exception e) {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; e.getMessage();
}
</span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
    String failImport </span>=<span style="color: #000000;"&gt; dayRecruitService.importDayrecruit(
            dataList,account);
} </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (RuntimeException e) {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; e.getMessage();
} </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (Exception e) {
    </span><span style="color: #0000ff;"&gt;return</span> "请仔细核对<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>格式(参考备注)"<span style="color: #000000;"&gt;;
}
</span><span style="color: #0000ff;"&gt;return</span> "<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>成功"<span style="color: #000000;"&gt;;

}

private static final String[] headers = <span style="color: #0000ff;">new String[] {"日清日期","备注","面试人数","入职人数","招聘企业"};

readExcel代码:把数据先读到一个dayrecruit模板中 原因是当前读的数据不是直接向数据库中存的数据。

public ArrayList readExcel(String absolutePath, = list = </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; list; } public static final String[] columnHeaders </span>= { "date"<span style="color: #000000;"&gt;,</span>"remarks","viewerNu"<span style="color: #000000;"&gt;,</span>"entryNu","customerName"};</pre>

正式读取excle数据代码

public ArrayList list = ArrayList objs = ArrayList </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> i = 0; i < columnHeads.length; i++<span style="color: #000000;"&gt;) { </span><span style="color: #0000ff;"&gt;char</span> f = columnHeads[i].charAt(0<span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;if</span> (!<span style="color: #000000;"&gt;Character.isUpperCase(f)) { columnHeads[i] </span>=<span style="color: #000000;"&gt; String.valueOf(Character.toUpperCase(f)) </span>+ columnHeads[i].substring(1<span style="color: #000000;"&gt;); } Method methodGet </span>= entity.getMethod("get" +<span style="color: #000000;"&gt; columnHeads[i]); Method methodSet </span>= entity.getMethod("set" +<span style="color: #000000;"&gt; columnHeads[i],methodGet.getReturnType()); list.add(methodSet); } InputStream inputstream </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; FileInputStream(filePath); Workbook wb </span>=<span style="color: #000000;"&gt; WorkbookFactory.create(inputstream); Sheet sheet1 </span>= wb.getSheetAt(0<span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> i = 1; i <= sheet1.getLastRowNum() - noReadSize; i++<span style="color: #000000;"&gt;) { </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { Object obj </span>=<span style="color: #000000;"&gt; entity.newInstance(); Cell cell </span>= <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> k = 0; k < list.size(); k ++<span style="color: #000000;"&gt;) { cell </span>=<span style="color: #000000;"&gt; sheet1.getRow(i).getCell(k); </span><span style="color: #0000ff;"&gt;if</span>(cell.getCellType() == 0<span style="color: #000000;"&gt;){ </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;判断是否为日期</span> <span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt;(HSSFDateUtil.isCellDateFormatted(cell)){ SimpleDateFormat sdf </span>= <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;if</span> (cell.getCellStyle().getDataFormat() ==<span style="color: #000000;"&gt; HSSFDataFormat .getBuiltinFormat(</span>"h:mm"<span style="color: #000000;"&gt;)) { sdf </span>= <span style="color: #0000ff;"&gt;new</span> SimpleDateFormat("HH:mm"<span style="color: #000000;"&gt;); } </span><span style="color: #0000ff;"&gt;else</span> {<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 日期 </span> sdf = <span style="color: #0000ff;"&gt;new</span> SimpleDateFormat("yyyy-MM-dd"<span style="color: #000000;"&gt;); } Date date </span>=<span style="color: #000000;"&gt; cell.getDateCellValue(); cell.setCellValue(sdf.format(date)); }</span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;{ </span><span style="color: #0000ff;"&gt;double</span> value =<span style="color: #000000;"&gt; cell.getNumericCellValue(); CellStyle style </span>=<span style="color: #000000;"&gt; cell.getCellStyle(); DecimalFormat format </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; DecimalFormat(); String temp </span>=<span style="color: #000000;"&gt; style.getDataFormatString(); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 单元格设置成常规 </span> <span style="color: #0000ff;"&gt;if</span> (temp.equals("General"<span style="color: #000000;"&gt;)) { format.applyPattern(</span>"#"<span style="color: #000000;"&gt;); } cell.setCellValue(format.format(value)); } } list.get(k).invoke(obj,cell.toString()); } objs.add(obj); } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (Exception e) { e.printStackTrace(); </span><span style="color: #0000ff;"&gt;throw</span> <span style="color: #0000ff;"&gt;new</span> Exception("Excel <a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>第" + i + "行格式<a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a>"<span style="color: #000000;"&gt;); } } } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (Exception e) { e.printStackTrace(); </span><span style="color: #0000ff;"&gt;throw</span><span style="color: #000000;"&gt; e; } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; objs; }</span></pre>

然后调用import方法,里面会验证需要验证的数据。如果有一条没有通过验证那么所有的数据将会回滚操作。这主要牵扯到了事务管理。

public String importDayrecruit(List String failImport </span>= ""<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;if</span> (dataList != <span style="color: #0000ff;"&gt;null</span> &amp;&amp; dataList.size() > 0<span style="color: #000000;"&gt;) { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;根据公司user找到对应公司 根据公司找到对应的 招聘企业 根据招聘企业 </span> Organization org =<span style="color: #000000;"&gt; dayRecruitDAO.findOrganizationById(user.getOrganization().getId()); List</span><EnterpriseCustomer> customers =<span style="color: #000000;"&gt; dayRecruitDAO.findAllEnterpriseCustomerByOrg(user.getOrganization().getId()); </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> i = 0; i < dataList.size(); i++<span style="color: #000000;"&gt;) { DayRecruit dayRec </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; DayRecruit(); Template_DayRecruit t_dayRecruit </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Template_DayRecruit(); t_dayRecruit </span>=<span style="color: #000000;"&gt; (Template_DayRecruit) dataList.get(i); dayRec.setWriter(user.getLoginName()); dayRec.setDatatime(</span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Date()); dayRec.setRemarks(t_dayRecruit.getRemarks().trim()); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;dayRec.</span> <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;验证招聘日期</span> <span style="color: #0000ff;"&gt;if</span>(isValidDate(t_dayRecruit.getDate().trim()) &amp;&amp;<span style="color: #000000;"&gt; StringUtils.isNotBlank(t_dayRecruit.getDate().trim())){ dayRec.setDate(t_dayRecruit.getDate().toString()); }</span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;throw</span> <span style="color: #0000ff;"&gt;new</span> RuntimeException("第" + (i + 2<span style="color: #000000;"&gt;) </span>+ "行填写招聘日清日期有误,请重新确定"<span style="color: #000000;"&gt;); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;验证填写人</span><span style="color: #008000;"&gt;

/*<span style="color: #008000;"> if(StringUtils.isNotBlank(dayRec.getWriter()) && dayRec.getWriter().equals(user.getUserName())){
dayRec.setWriter(dayRec.getWriter().trim());
}
else{
throw new RuntimeException("第" + (i + 2)

  • "行填写输入人有误,请填写您的登录账号,请重新确定");
    }<span style="color: #008000;">*/
    <span style="color: #008000;">//<span style="color: #008000;">验证面试人数
    <span style="color: #0000ff;">if(isNumeric(t_dayRecruit.getViewerNu().trim()) &&<span style="color: #000000;"> StringUtils.isNotBlank(t_dayRecruit.getViewerNu().trim())){
    dayRec.setViewerNu(t_dayRecruit.getViewerNu().trim());
    }
    <span style="color: #0000ff;">else <span style="color: #0000ff;">throw <span style="color: #0000ff;">new RuntimeException("第" + (i + 2<span style="color: #000000;">)
    + "行填写面试人数有误,请重新确定"<span style="color: #000000;">);
    <span style="color: #008000;">//<span style="color: #008000;">验证入职人数
    <span style="color: #0000ff;">if(isNumeric(t_dayRecruit.getEntryNu().trim()) &&<span style="color: #000000;"> StringUtils.isNotBlank(t_dayRecruit.getEntryNu().trim())){
            </span><span style="color: #0000ff;"&gt;int</span>  re =<span style="color: #000000;"&gt;     Double.valueOf(t_dayRecruit.getEntryNu().trim()).compareTo(Double.valueOf(t_dayRecruit.getViewerNu().trim()));
              </span><span style="color: #0000ff;"&gt;if</span>(re <1<span style="color: #000000;"&gt;){                                        
                dayRec.setEntryNu(t_dayRecruit.getEntryNu().trim());    }
              </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; {
                  </span><span style="color: #0000ff;"&gt;throw</span> <span style="color: #0000ff;"&gt;new</span> RuntimeException("第" + (i + 2<span style="color: #000000;"&gt;)
                            </span>+ "行入职人数大于面试人数,请重新确定"<span style="color: #000000;"&gt;);
            }
            }
            </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;throw</span> <span style="color: #0000ff;"&gt;new</span> RuntimeException("第" + (i + 2<span style="color: #000000;"&gt;)
                    </span>+ "行填写入职人数有误,请重新确定"<span style="color: #000000;"&gt;);

            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;验证招聘企业  从模板中<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>招聘企业的名字 <a href="https://www.jb51.cc/tag/chaxun/" target="_blank" class="keywords">查询</a>出 此公司所有的招聘企业 对应的话  取 招聘企业这个对象赋值给dayR</span>

            <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 验证所属公司</span>
            <span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt;(StringUtils.isNoneBlank(t_dayRecruit.getCustomerName().trim())){
                </span><span style="color: #0000ff;"&gt;boolean</span> isOK = <span style="color: #0000ff;"&gt;false</span><span style="color: #000000;"&gt;;
                </span><span style="color: #0000ff;"&gt;if</span>(customers != <span style="color: #0000ff;"&gt;null</span> &amp;&amp; customers.size()>0<span style="color: #000000;"&gt;){
                </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> j =0;j<customers.size();j++<span style="color: #000000;"&gt;){
                </span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt;(customers.get(j).getEnterpriseName().equals(t_dayRecruit.getCustomerName().trim())){

                    dayRec.setCustomer(customers.get(j));
                    isOK </span>= <span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;;
                    </span><span style="color: #0000ff;"&gt;break</span>;<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;跳出当前循环</span>

<span style="color: #000000;"> }

            }

            }
                </span><span style="color: #0000ff;"&gt;if</span> (!<span style="color: #000000;"&gt;isOK) {
                    </span><span style="color: #0000ff;"&gt;throw</span> <span style="color: #0000ff;"&gt;new</span> RuntimeException("第" + (i + 2<span style="color: #000000;"&gt;)
                            </span>+ "行招聘企业输入有误,请重新确定"<span style="color: #000000;"&gt;);
                }
            }

            dayRecruitDAO.add(dayRec);
        }
    } </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; {
        </span><span style="color: #0000ff;"&gt;throw</span> <span style="color: #0000ff;"&gt;new</span> RuntimeException("导入数据为空"<span style="color: #000000;"&gt;);
    }
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; failImport;
}</span></pre>

这样数据就插入到对应数据库。完成导入操作。

 

原文链接:https://www.f2er.com/java/238767.html

猜你在找的Java相关文章