1. 程式人生 > >基於SSM的POI導入導出Excel實戰第二篇-導入EXCEL

基於SSM的POI導入導出Excel實戰第二篇-導入EXCEL

b2b cto 信息 star water excel 對象 bee ssm

業務需求:上文已經實現了產品信息Excel的導出,接下來將用POI實現Excel導入

需求分析:導入其實是導出的逆過程,數據格式是一樣的,均為矩陣式(二維)的數據格式,下面將以導出的模板作為Excel導入時數據填充的文件!

技術分享圖片

下面就直接進入正文,在閱讀正文源碼期間如果有相關問題可以加我QQ:1974544863 咨詢我 或者加群:583522159 進行技術討論。下面是我的個人公眾號,感興趣的童鞋可以關註(有幹貨以及項目實戰分享哦)
技術分享圖片

好了,讓我們進入代碼實戰吧!

  1. 在實戰之前,介紹一下項目使用的“狀態碼”枚舉類StatusCode,“自定義Excel版本”枚舉類WorkBookVersion以及“通用響應類”BaseResponse如下所示:
    技術分享圖片

技術分享圖片

技術分享圖片

  1. 接著,在ProductController開發導入Excel的功能,其中,我在這裏采用的是同步提交表單的方式(因為涉及到同步上傳文件),並用MultipartHttpServletRequest充當request(目的真是為了直接獲取MultipartFile屬性並進行後續的文件操作-在這裏順帶說一下,springmvc所有涉及到文件上傳的均可以采用此請求對象同步接收前端參數)
    技術分享圖片

  2. 正如上圖所展示的,前面部分用於獲取相關請求參數,中間才是“導入”的核心重點,即創建Workbook實例(根據後綴名選擇不同的Workbook子類),如圖
    技術分享圖片

接著則是封裝一個Poi服務類,用於讀取上傳上來的Excel的內容,其思路其實就是本文最先開始的“實現思路”,即:

技術分享圖片

而其實現思路如下:
技術分享圖片

在這裏我封裝了一個統一處理從Excel讀取出來的Cell(單元格)的內容:
技術分享圖片

  1. 將上面讀取的到List<Product>,插入到數據庫表中(采用批量插入或者一行一行插入其實都是可以的,“批量插入的Sql在數據庫底層其實是一行一行執行的”)
  2. 最後,可以看一下效果:
    技術分享圖片

技術分享圖片

感悟:在導入Excel過程中,需要讀取Excel每一行每一列的數據,而在讀取到每個row每個column時,會發現excel中預先設定好的header其實就是某個entity類的字段屬性,而每個row的具體取值其實就是該類每個對象實例。眾多的row即List<Entity>構成了整個sheet,乃至整個Excel

好了,POI導入Excel就介紹到這裏吧,有相關問題可以加我上面個人QQ或者群咨詢我哦!!

基於SSM的POI導入導出Excel實戰第二篇-導入EXCEL