旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java怎样导入excel文件【JAVA教程】,java,导入,excel,文件

作者:搜教程发布时间:2019-12-10分类:JAVA教程浏览:68评论:0


导读:思绪剖析:1、我们要做导入,实际上也就是先文件上传,然后读取文件的数据。2、我们要有一个导入的模板,由于我们导入的Excel列要和我们的数据字段匹配上,所以我们要给它来...

思绪剖析:

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文件的细致内容,更多请关注ki4网别的相干文章!

标签:java导入excel文件


欢迎 发表评论: