recherche
MaisonJavajavaDidacticielComment importer des en-têtes multi-niveaux dans Java easyExcel

Tout d'abord, vous devez comprendre

Comment easyExcel obtient l'en-tête du tableau et collez le code directement sans aucune bêtise

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) {

    }
}

Ce code est utilisé pour intercepter l'en-tête du tableau lorsque easyExcel lit le tableau Excel

La classe peut être créée par lui-même et hérite de AnalysisEventListener, puis réécrit-le. La méthode InvoqueHeadMap peut obtenir l'en-tête de premier niveau d'Excel.

Le code pour importer le fichier ci-dessous

//加载拦截器 作用于 获取表头
            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();

Nous avons maintenant les données et l'en-tête. Certaines personnes seront curieuses, vous n'avez que l'en-tête de premier niveau, qu'en est-il de mon en-tête de deuxième niveau ? Ne vous inquiétez pas. Écoutez-moi lentement.

Le bloc de code ci-dessus, la deuxième ligne obtient les données Excel. Ces données sont les données après avoir supprimé l'en-tête de premier niveau. Certaines personnes peuvent comprendre cela, et certaines personnes ne comprennent toujours pas. OK, continuons, la troisième. La ligne de code est une collection d'en-têtes de table interceptée par notre intercepteur. On peut voir que la clé de la carte reçue par map est de type Integer. Par coïncidence, notre liste de données contient également une carte et la clé de la carte se trouve être. De type entier, à cette époque, les étudiants bons en logique ont dû penser que cet entier n'est pas écrit et trié au hasard, mais que la position de l'en-tête du tableau fait écho aux données. Ensuite, c'est facile pour le moment. Il suffit de trouver la position de départ de l'en-tête à plusieurs niveaux. Je posterai l'image ci-dessous et y répondrai.

Comment importer des en-têtes multi-niveaux dans Java easyExcel

Vérifiez que les résultats sont désormais des en-têtes multi-niveaux fusionnés. À ce stade, 1 dans l'ensemble d'en-têtes que nous avons obtenu correspond au nom, 2 correspond au numéro de téléphone et 3 correspond aux résultats. nous avons obtenu, le code est list.get (0); Les données obtenues sont les données de l'en-tête secondaire. À ce moment, une autre carte est obtenue. Les relations correspondantes sont 1=null 2=null 3=anglais 4=chinois. À ce moment-là, quelqu'un m'a demandé à nouveau : et si j'avais un en-tête à plusieurs niveaux plus tard ? autocollants.

Comment importer des en-têtes multi-niveaux dans Java easyExcel

À ce moment, dans les données d'en-tête que nous avons obtenues, 1=nom 2=numéro de téléphone 3=score 4=null 5=dans la liste des données obtenues à partir des résultats de l'évaluation, 1=null 2=null 3=anglais 4=Chinois 5 =Anglais 6=Chinois
C'est la fin de l'import de plusieurs en-têtes. Certaines personnes ne savent toujours pas comment les enregistrer dans la base de données, il faut donc y penser. Le plus stupide est de s'en souvenir. pour remplir les indices dans les entités. Dans cette catégorie, cette méthode n'est pas recommandée et est peu flexible ! La meilleure façon est d'utiliser une énumération pour faire correspondre le texte, puis de faire correspondre le champ, de remplir la classe d'entité ou d'écrire une méthode pour faire correspondre le texte avec le champ et convertir automatiquement la classe d'entité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP