Wie easyExcel den Tabellenkopf erhält, und den Code direkt und ohne Unsinn einfügen
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) { } }
Dieser Code wird verwendet, um den Tabellenkopf abzufangen, wenn easyExcel die Excel-Tabelle liest
Die Klasse kann erstellt werden selbst und erben Sie AnalysisEventListener und schreiben Sie es dann neu. Die invokeHeadMap-Methode kann den Header der ersten Ebene von Excel abrufen.
//加载拦截器 作用于 获取表头 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();
Jetzt haben wir die Daten und den Tabellenkopf. Einige Leute werden neugierig sein, Sie haben nur den Header der ersten Ebene, was ist mit meinem Header der zweiten Ebene? Mach dir keine Sorgen. Hör mir langsam zu.
Der Codeblock oben, die zweite Zeile, sind die Daten nach dem Entfernen des Headers der ersten Ebene, und einige Leute verstehen es immer noch nicht. Fahren wir fort Die Codezeile ist eine Sammlung von Tabellenüberschriften, die von unserem Interceptor abgefangen wurden. Es ist ersichtlich, dass der von der Karte empfangene Schlüssel vom Typ Integer ist. Zufälligerweise enthält unsere Datenliste auch eine Karte, und der Schlüssel der Karte ist zufällig Ganzzahltyp. Zu diesem Zeitpunkt müssen Schüler mit guten Logikkenntnissen gedacht haben, dass diese Ganzzahl nicht zufällig geschrieben und sortiert wird, sondern die Position des Tabellenkopfes die Daten widerspiegelt. Dann ist es jetzt einfach, die Startposition des mehrstufigen Headers zu finden. Ich werde das Bild unten posten und dann die Frage beantworten.
Beachten Sie, dass es sich bei den Ergebnissen nun um zusammengeführte mehrstufige Header handelt. Zu diesem Zeitpunkt entspricht 1 im Header-Set dem Namen, 2 entspricht der Telefonnummer und 3 entspricht der Datenliste Wir erhalten den Code list.get (0); Die erhaltenen Daten sind die Daten im sekundären Header. Die entsprechenden Beziehungen sind 1=null 2=null 3=Englisch 4=Chinesisch. Zu diesem Zeitpunkt fragte mich erneut jemand: Was ist, wenn ich später einen mehrstufigen Header habe? Aufkleber.
Zu diesem Zeitpunkt sind in den von uns erhaltenen Kopfdaten 1 = Name, 2 = Telefonnummer, 3 = Punktzahl, 4 = Null, 5 = in den aus den Bewertungsergebnissen erhaltenen Listendaten 1 = Null, 2 = Null, 3 = Englisch 4=Chinesisch 5 =Englisch 6=Chinesisch
Dies ist das Ende des Imports mehrerer Header. Einige Leute wissen immer noch nicht, wie sie es in der Datenbank speichern sollen. Der dümmste Weg ist, sich daran zu erinnern Um die Indizes in die Entitäten einzufügen, wird diese Methode dringend empfohlen, da sie unflexibel ist! Der beste Weg besteht darin, eine Aufzählung zu verwenden, um den Text abzugleichen, dann das Feld abzugleichen, die Entitätsklasse auszufüllen oder eine Methode zu schreiben, um den Text mit dem Feld abzugleichen und die Entitätsklasse automatisch zu konvertieren.
Das obige ist der detaillierte Inhalt vonSo importieren Sie mehrstufige Header in Java easyExcel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!