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

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

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

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

下面就直接進入正文,在閱讀正文源碼期間如果有相關問題可以加我QQ:1974544863 諮詢我 或者加羣:583522159 進行技術討論。下面是我的個人公衆號,感興趣的童鞋可以關注(有乾貨以及項目實戰分享哦)
基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

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

  1. 在實戰之前,介紹一下項目使用的“狀態碼”枚舉類StatusCode,“自定義Excel版本”枚舉類WorkBookVersion以及“通用響應類”BaseResponse如下所示:
    基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

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

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

  1. 接着,在ProductController開發導入Excel的功能,其中,我在這裏採用的是同步提交表單的方式(因爲涉及到同步上傳文件),並用MultipartHttpServletRequest充當request(目的真是爲了直接獲取MultipartFile屬性並進行後續的文件操作-在這裏順帶說一下,springmvc所有涉及到文件上傳的均可以採用此請求對象同步接收前端參數)
    基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

  2. 正如上圖所展示的,前面部分用於獲取相關請求參數,中間纔是“導入”的核心重點,即創建Workbook實例(根據後綴名選擇不同的Workbook子類),如圖
    基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

接着則是封裝一個Poi服務類,用於讀取上傳上來的Excel的內容,其思路其實就是本文最先開始的“實現思路”,即:
基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

而其實現思路如下:
基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

在這裏我封裝了一個統一處理從Excel讀取出來的Cell(單元格)的內容:
基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

  1. 將上面讀取的到List<Product>,插入到數據庫表中(採用批量插入或者一行一行插入其實都是可以的,“批量插入的Sql在數據庫底層其實是一行一行執行的”)
  2. 最後,可以看一下效果:
    基於SSM的POI導入導出Excel實戰第三篇-導入EXCEL

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章