java怎么导入excel文件
Java  /  管理员 发布于 8年前   147
思路分析:
1、我们要做导入,实际上也就是先文件上传,然后读取文件的数据。
2、我们要有一个导入的模板,因为我们导入的Excel列要和我们的数据字段匹配上,所以我们要给它来一个规定,也就是模板。
3、首先做一个导入信息的临时表,用来存导入文件中的信息。每当导入的时候,我们先把表信息清空,再拿到数据放进来,然后我们对导入的数据进行检查,最后才全部导入。
这样做的目的是防止导入的数据和列没有对上却也直接导到了库里面。
免费视频教程分享:java在线视频
代码分析
1、前端js代码:
var actionPath = contextPath + "/alumni-import";$(function() { //加载数据 loadData(); //上传文件 uploadFile({ subfix: ['xls'], subfixTip: "请选择Excel的xls文件!", successCall: function(data, status, a) {$('[name=attachementPath]').val(data.fileName);$.post(actionPath + "!importExcel", { "f_id": data.f_id }, function(data) { if (data.success) { alertify.alert(data.message); $("#myModal-import").modal("hide"); loadData(); } else { alertify.alert(data.message); }}, "json"); } }); //导入 $("#btn-import").click(function() { var html = template("importTpl"); $("#import-body").html(html); $("#myModal-import").modal(); }); //确认导入 $("#btn-sure").click(function() { var type = $("#indentity-type").val(); alertify.confirm("确定要全部导入吗?", function(e) {if (!e) { return; } else { $.post("/alumni-import!saveReal?type=" + type, function(data) { alertify.alert("导入成功!", function() {location.href = "/alumni!hrefPage"; }); }, "json");} }); });});50 function loadData() { var options = { url: actionPath + "!page" }; loadPaginationData(options);}
2、后台功能代码
前端有四个请求,一个初始化页面数据加载,当然,一开始是没有数据的;一个导入文件上传;一个确认导入;一个导入完成后页面跳转回要信息页面(信息页面有一个批量导入跳转到这的导入页面)。
第一个后最后一个就不讲了。讲一下第二个和第三个。
(1)第二个
//上传文件后调用 public void importExcel() { try {//清空临时表的数据baseAlumniImportSrv.deleteAll();//读取文件File file = gridFsDao.readFile(f_id);//把文件信息给临时表int count = excelXYSrv.importExcel(file);//清空上传的文件file.delete();sendSuccessMsg(count, "上传成功" + count + "条数据"); } catch (IOException e) {LOGGER.error(e);sendFailMsg(null, "上传失败"); } }
@Override //使用MongoDB GridFS public File readFile(String f_id) { //拿到文件 GridFSDBFile gridFSFile = mongoGridFs.findOne(new Query(Criteria.where(F_ID).is(f_id))); if (gridFSFile == null) {return null; } String fileName = gridFSFile.getFilename(); String extension = fileName.substring(fileName.lastIndexOf("."), fileName.length()); InputStream ins = gridFSFile.getInputStream(); String tmpFile = UUID.randomUUID().toString() + extension; File file = new File(tmpFile); try {OutputStream os = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead);}os.close();ins.close(); } catch (IOException e) {e.printStackTrace(); } return file; }
/** * @param excelFile *从excel中读取数据,并存储到数据库临时表中 * @return * @throws IOException */ @Override public int importExcel(File excelFile) throws IOException { List<List<Object>> datas = ExcelImportUtil.readExcel(excelFile); int count = 0; for (int i = 1; i < datas.size(); i++) {BaseAlumniImport entity = this.convert2Entity(datas.get(i));this.baseAlumniImportSrv.save(entity);count++; } return count; }
(3)第三个
public void saveReal() { int count = 0; List<BaseAlumniImport> importList = this.baseAlumniImportSrv.findAll(); for (int i = 0; i < importList.size(); i += 10) {List<BaseAlumniImport> newlist = new ArrayList<>();if ((i + 10) < importList.size()) { newlist = importList.subList(i, i + 10);} else { newlist = importList.subList(i, importList.size());}count += excelXYSrv.saveReal(newlist, this.type); } sendSuccessMsg(count, "导入成功" + importList.size() + "条数据"); }
@Override public int saveReal(List<BaseAlumniImport> importList, String type) { int count = 0; String alumniIdentityName = dicSrv.findById(DicAlumniIdentity.class, Integer.parseInt(type)).getValue(); for (BaseAlumniImport inst : importList) {LOGGER.info(inst.getId());BaseAlumni v = this.importExportSrv.convert(inst);v.setId(IdKit.uuid());v.setCreateTime(new Date());v.setLastUpdate(new Date());this.baseAlumnidDao.save(v);this.baseAlumniImportSrv.deleteById(inst.getId());count++; } return count; }
@Override public int saveReal(List<BaseAlumniImport> importList, String type) { int count = 0; String alumniIdentityName = dicSrv.findById(DicAlumniIdentity.class, Integer.parseInt(type)).getValue(); for (BaseAlumniImport inst : importList) {LOGGER.info(inst.getId());BaseAlumni v = this.importExportSrv.convert(inst);v.setId(IdKit.uuid());v.setCreateTime(new Date());v.setLastUpdate(new Date());this.baseAlumnidDao.save(v);this.baseAlumniImportSrv.deleteById(inst.getId());count++; } return count; }
结果图演示:
相关文章教程推荐:java零基础入门
以上就是java怎么导入excel文件的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号