1. 程式人生 > 程式設計 >Java中easypoi匯入excel檔案列名相同的處理方案

Java中easypoi匯入excel檔案列名相同的處理方案

Easypoi是什麼

Easypoi 功能如同名字easy,主打的功能就是容易,讓一個沒接觸過poi的人員,就可以方便的寫出Excel匯出、Excel模板匯出、Excel匯入、Word模板匯出,通過簡單的註解和模板語言(熟悉的表示式fe語法),完成以前複雜的寫法

開源地址:https://gitee.com/lemur/easypoi

獨特的功能

  • 基於註解的匯入匯出,修改註解就可以修改Excel
  • 支援常用的樣式自定義
  • 基於map可以靈活定義的表頭欄位
  • 支援一堆多的匯出,匯入
  • 支援模板的匯出,一些常見的標籤,自定義標籤
  • 支援HTML/Excel轉換,如果模板還不能滿足使用者的變態需求,請用這個功能
  • 支援word的匯出,支援圖片,Excel

更多特性與功能詳解:easypoi官網說明

官方demo
官網例項工程:easypoi-test

匯入

1. 指定模板匯入

在匯入指定Excel模板的過程中,可能會碰到列名重複的問題,當我們使用Easypoi的註解方式進行匯入時,會發現出現丟失資料的情況,原因是原始碼在解析註解對映關係的時候,使用的map進行儲存,當實體的註解存在相同名稱時,key會被重新覆蓋,導致資料列丟失,如圖通過新增fixedIndex屬性得以解決:

Java中easypoi匯入excel檔案列名相同的處理方案

需要注意的是:fixedIndex是從0開始

Excel檔案如圖:

Java中easypoi匯入excel檔案列名相同的處理方案

2. Map自由匯入

  ImportParams importParams = new ImportParams();
  importParams.setTitleRows(3);//標題行
  importParams.setHeadRows(1);//表頭行
  importParams.setStartSheetIndex(0);//開始的sheet下標
  importParams.setKeyIndex(null);//設定讀取空值
  File file = new File("/file/file.xlsx");//檔案路徑
  try {
    List<Map> list = ExcelImportUtil.importExcel(file,Map.class,importParams);
  } catch (Exception e) {
    e.printStackTrace();
  }

存在的問題

  • 匯入相同列名依舊會有丟失資料的問題,原因key重複,目前好像沒找到解決辦法
  • 遍歷時預設map的值為空則不返回,通過設定setKeyIndex(null)可以解決該問題
  • 當表頭存在多個的時候,遍歷的titlemap存在問題,詳見issues

小結

總的來說,easypoi功能還是很強大,使用上也簡單,主要是把資料結構想清楚,之後的匯入匯出邏輯就很簡單了,本文example 在GitHub上地址:easypoi-demo

到此這篇關於Java中easypoi匯入excel檔案列名相同的處理方案的文章就介紹到這了,更多相關Java 匯入excel檔案列名相同內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!