Heim > Java > JavaBase > So importieren Sie Excel-Dateien in Java

So importieren Sie Excel-Dateien in Java

王林
Freigeben: 2019-12-09 15:50:47
Original
4925 Leute haben es durchsucht

So importieren Sie Excel-Dateien in Java

Ideenanalyse:

1 Wir müssen importieren, was eigentlich bedeutet, dass wir zuerst die Datei hochladen und dann die Daten der Datei lesen.

2. Wir benötigen eine importierte Vorlage, da die von uns importierte Excel-Spalte mit unseren Datenfeldern übereinstimmen muss, also müssen wir ihr eine Spezifikation geben, die eine Vorlage ist.

3. Erstellen Sie zunächst eine temporäre Tabelle der importierten Informationen, um die Informationen in der importierten Datei zu speichern. Bei jedem Import löschen wir zunächst die Tabelleninformationen, holen uns dann die Daten und geben sie ein, dann überprüfen wir die importierten Daten und importieren schließlich alles.

Der Zweck besteht darin, zu verhindern, dass die importierten Daten und Spalten direkt in die Bibliothek importiert werden, ohne dass sie übereinstimmen.

Kostenloses Teilen von Video-Tutorials: Java-Online-Video

Code-Analyse

1. Front-End-JS-Code:

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);
}
Nach dem Login kopieren

2 . Backend Der Funktionscode

hat vier Anfragen am Frontend, eine zum Laden der anfänglichen Seitendaten, natürlich gibt es keine Daten am Anfang, eine zum Bestätigen des Imports; ; eine, um nach Abschluss des Imports zur Informationsseite zurückzukehren (Die Informationsseite verfügt über eine Batch-Importseite, die zu dieser Importseite springt).

Über den letzten werde ich nach dem ersten nicht sprechen. Lassen Sie uns über den zweiten und dritten sprechen.

(1) Der zweite

//上传文件后调用
    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, "上传失败");
        }
    }
Nach dem Login kopieren
@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;
    }
Nach dem Login kopieren
/**
     * @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;
    }
Nach dem Login kopieren

(3) Der dritte

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() + "条数据");
    }
Nach dem Login kopieren
@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;
    }
Nach dem Login kopieren
Nach dem Login kopieren
@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;
    }
Nach dem Login kopieren
Nach dem Login kopieren

Demonstration des Ergebnisdiagramms:

So importieren Sie Excel-Dateien in Java

So importieren Sie Excel-Dateien in Java

So importieren Sie Excel-Dateien in Java

So importieren Sie Excel-Dateien in Java

Empfohlene Tutorials zu verwandten Artikeln: Erste Schritte ohne Java-Grundkenntnisse

Das obige ist der detaillierte Inhalt vonSo importieren Sie Excel-Dateien in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Kann Java als Backend des Webs verwendet werden?
Aus 1970-01-01 08:00:00
0
0
0
Installieren Sie JAVA
Aus 1970-01-01 08:00:00
0
0
0
Java kann nicht installiert werden
Aus 1970-01-01 08:00:00
0
0
0
Ist das in der Java-Sprache?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage