溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

將excel文件導(dǎo)入java的方法

發(fā)布時(shí)間:2020-06-18 11:01:48 來(lái)源:億速云 閱讀:173 作者:Leah 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)將excel文件導(dǎo)入java的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

思路分析:

1、我們要做導(dǎo)入,實(shí)際上也就是先文件上傳,然后讀取文件的數(shù)據(jù)。

2、我們要有一個(gè)導(dǎo)入的模板,因?yàn)槲覀儗?dǎo)入的Excel列要和我們的數(shù)據(jù)字段匹配上,所以我們要給它來(lái)一個(gè)規(guī)定,也就是模板。

3、首先做一個(gè)導(dǎo)入信息的臨時(shí)表,用來(lái)存導(dǎo)入文件中的信息。每當(dāng)導(dǎo)入的時(shí)候,我們先把表信息清空,再拿到數(shù)據(jù)放進(jìn)來(lái),然后我們對(duì)導(dǎo)入的數(shù)據(jù)進(jìn)行檢查,最后才全部導(dǎo)入。

這樣做的目的是防止導(dǎo)入的數(shù)據(jù)和列沒(méi)有對(duì)上卻也直接導(dǎo)到了庫(kù)里面。

代碼分析

1、前端js代碼:

var actionPath = contextPath + "/alumni-import";
$(function() {
    //加載數(shù)據(jù)
    loadData();
    //上傳文件
    uploadFile({
        subfix: ['xls'],
        subfixTip: "請(qǐng)選擇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");
        }
    });
    //導(dǎo)入
    $("#btn-import").click(function() {
        var html = template("importTpl");
        $("#import-body").html(html);
        $("#myModal-import").modal();
    });
    //確認(rèn)導(dǎo)入
    $("#btn-sure").click(function() {
        var type = $("#indentity-type").val();
        alertify.confirm("確定要全部導(dǎo)入嗎?", function(e) {
            if (!e) { return; } else {
                $.post("/alumni-import!saveReal?type=" + type, function(data) {
                    alertify.alert("導(dǎo)入成功!", function() {
                        location.href = "/alumni!hrefPage";
                    });
                }, "json");
            }
        });
    });
});50 
function loadData() {
    var options = {
        url: actionPath + "!page"
    };
    loadPaginationData(options);
}

2、后臺(tái)功能代碼

前端有四個(gè)請(qǐng)求,一個(gè)初始化頁(yè)面數(shù)據(jù)加載,當(dāng)然,一開(kāi)始是沒(méi)有數(shù)據(jù)的;一個(gè)導(dǎo)入文件上傳;一個(gè)確認(rèn)導(dǎo)入;一個(gè)導(dǎo)入完成后頁(yè)面跳轉(zhuǎn)回要信息頁(yè)面(信息頁(yè)面有一個(gè)批量導(dǎo)入跳轉(zhuǎn)到這的導(dǎo)入頁(yè)面)。

第一個(gè)后最后一個(gè)就不講了。講一下第二個(gè)和第三個(gè)。

(1)第二個(gè)

//上傳文件后調(diào)用
    public void importExcel() {
        try {
            //清空臨時(shí)表的數(shù)據(jù)
            baseAlumniImportSrv.deleteAll();
            //讀取文件
            File file = gridFsDao.readFile(f_id);
            //把文件信息給臨時(shí)表
            int count = excelXYSrv.importExcel(file);
            //清空上傳的文件
            file.delete();
            sendSuccessMsg(count, "上傳成功" + count + "條數(shù)據(jù)");
        } 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中讀取數(shù)據(jù),并存儲(chǔ)到數(shù)據(jù)庫(kù)臨時(shí)表中
     * @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)第三個(gè)

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, "導(dǎo)入成功" + importList.size() + "條數(shù)據(jù)");
    }
@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;
    }

結(jié)果圖演示:

將excel文件導(dǎo)入java的方法

將excel文件導(dǎo)入java的方法

將excel文件導(dǎo)入java的方法

將excel文件導(dǎo)入java的方法

上述就是小編為大家分享的將excel文件導(dǎo)入java的方法了,如果您也有類似的疑惑,不妨參照上述方法進(jìn)行嘗試。如果想了解更多相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI