Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengimport pengepala berbilang peringkat dalam Java easyExcel

Bagaimana untuk mengimport pengepala berbilang peringkat dalam Java easyExcel

WBOY
WBOYke hadapan
2023-05-07 13:18:123365semak imbas

Pertama sekali, anda perlu faham

Cara easyExcel mendapatkan pengepala jadual dan tampal kod terus tanpa sebarang karut

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.Data;

import java.util.*;

@Data
public class AnalysisEventMonitor extends AnalysisEventListener<Map<Integer, String>> {
    /**
     * 存储Key
     */
    Map<Integer, String> key = new HashMap<>();
    /**
     * keuList
     */
    List<String> keyList=new ArrayList<>();

    public AnalysisEventMonitor() {
    }
    /**
     * 重写invokeHeadMap方法,获去表头,如果有需要获取第一行表头就重写这个方法,不需要则不需要重写
     *
     * @param headMap Excel每行解析的数据为Map<Integer, String>类型,Integer是Excel的列索引,String为Excel的单元格值
     * @param context context能获取一些东西,比如context.readRowHolder().getRowIndex()为Excel的行索引,表头的行索引为0,0之后的都解析成数据
     */
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        Set<Integer> integerSet = headMap.keySet();
        for (Integer integer : integerSet) {
            keyList.add(headMap.get(integer));
        }
        key.putAll(headMap);
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

    }

    @Override
    public void invoke(Map<Integer, String> integerStringMap, AnalysisContext analysisContext) {

    }
}

Kod ini digunakan untuk memintas pengepala jadual apabila easyExcel membaca jadual excel

Buat kelas sendiri dan warisi AnalysisEventListener, dan kemudian tulis semula kaedah invokeHeadMapnya untuk mendapatkan pengepala peringkat pertama excel.

Kod berikut untuk mengimport fail

//加载拦截器 作用于 获取表头
            AnalysisEventMonitor analysisEventMonitor = new AnalysisEventMonitor ();
            //读取导入的excel 这个地方容易报错 0✖什么的 这个时候就去把excel的文件用高级版本的excel重新导出 因为版本过低的问题
            List<Map<Integer,Object>> list = EasyExcel.read(file.getInputStream(),analysisEventMonitor ).sheet(0).doReadSync();
            //获取拦截器拦截到的 表头的Map集合
            Map<Integer, String> key = analysisEventMonitor .getKey();

Kini kami mempunyai data dan pengepala. Sesetengah orang akan ingin tahu, anda hanya mendapat pengepala peringkat pertama, bagaimana dengan pengepala peringkat kedua saya? Jangan risau dengar saya perlahan-lahan.

Dalam blok kod di atas, baris kedua memperoleh data excel Data ini ialah data selepas mengalih keluar pengepala peringkat pertama Apabila perkara ini berlaku, sesetengah orang mungkin memahaminya, dan sesetengah orang masih tidak 'tak faham. OK Mari kita teruskan baris ketiga kod ialah koleksi tajuk jadual yang dipintas oleh pemintas kami mengandungi peta dan peta Kekunci jenis Integer Pada masa ini, pelajar yang mempunyai logik yang baik mesti menyangka bahawa integer ini tidak ditulis dan diisih secara rawak, tetapi kedudukan pengepala jadual menggemakan data. Kemudian ia adalah mudah pada masa ini Kita hanya perlu mencari kedudukan permulaan tajuk berbilang peringkat saya akan menyiarkan gambar di bawah dan kemudian menjawabnya.

Bagaimana untuk mengimport pengepala berbilang peringkat dalam Java easyExcel

Lihat bahawa hasilnya kini digabungkan menjadi pengepala berbilang peringkat Pada masa ini, dalam set pengepala yang kami perolehi, 1 sepadan dengan nama, 2 sepadan dengan telefon nombor, dan 3 sepadan dengan skor Senarai data yang diperolehi ditulis dalam senarai.get(0); 2=null 3=Bahasa Inggeris 4= bahasa. Pada masa ini, seseorang bertanya kepada saya lagi: Bagaimana jika saya mempunyai pengepala berbilang peringkat nanti? pelekat.

Bagaimana untuk mengimport pengepala berbilang peringkat dalam Java easyExcel

Dalam data pengepala yang kami perolehi pada masa ini, 1=nama 2=nombor telefon 3=skor 4=null 5=dalam data senarai yang diperoleh daripada hasil penilaian, 1=null 2=null 3=Bahasa Inggeris 4=Bahasa Cina 5=Bahasa Inggeris 6=Bahasa Cina
Ini menamatkan import berbilang pengepala masih tidak tahu cara menyimpannya ke dalam pangkalan data, jadi anda perlu memikirkannya ia. Kaedah yang paling bodoh ialah ingat untuk mengisi subskrip ke dalam kelas entiti Kaedah ini tidak disyorkan dan tidak fleksibel! Cara terbaik ialah menggunakan penghitungan untuk memadankan teks, kemudian memadankan medan, mengisi kelas entiti atau menulis kaedah untuk memadankan teks dengan medan dan menukar kelas entiti secara automatik.

Atas ialah kandungan terperinci Bagaimana untuk mengimport pengepala berbilang peringkat dalam Java easyExcel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam