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

業務需求:這裏我以產品信息爲例,用於POI導入導出Excel實戰的操作對象

需求分析:我們要導出的數據格式比較簡單,其實就是待導出的表(視圖)的數據,如下圖所示:
基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

實現思路:
A、會發現待導出的數據列表是一個矩陣式的格式,即二維的形式

B、其中的頭部id name unit price stock 等字段field是固定不變的,將會充當excel的頭部

C、以數據行的角度觀察數據列表,會發現每一行每一列的值都是B所指的那些字段一一對應的取值value

D、由此可以得出這些數據組織是由每一行數據組成,而每一行數據是由 field-value 對組成的,而這即可讓人聯想到 map的映射格式。即每一行row由map構成,整個表/視圖則由多行row組成,所以最終應輸出的數據格式爲:List<Map<key,value>>,如下圖所示:

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

有了上面的實現思路,其實我們已經實現了一大半!下面進入正文,閱讀正文期間,如果有任何問題均可以加我QQ:1974544863 或者入羣討論技術:583522159。以下是我的公衆號,感興趣的童鞋可以關注(有乾貨分享以及項目實戰分享哦!)
基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

好了,那我們就廢話不多說,進入代碼實戰吧:

  1. 首先創建表product,並定義以下字段,同時自己在表裏添加數據。並用mybatis逆向工程生成entity,mapper,mapper.xml文件
    基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

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

  1. 然後創建ProductController,開發導出Excel的功能,該功能的思路其實就是上面分析出來的實現思路,在這些代碼裏均能得到體現
    基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

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

  1. 其中ProductMapper的selectAll方法如下:
    基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

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

  1. 而ExcelBeanUtil.manageProductList方法用於將獲取的數據列表轉化爲上面所講的List<Map<>>代碼如下:
    基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

  2. ExcelUtil.fillExcelSheetData方法,則是將最終獲取到的List<Map<>>格式的數據列表真正的填充到Excel中,得到最終的Excel -Workbook實例:
    基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

  3. 最後,需要將得到的Workbook實例(其實就是一個Excel了)以流的形式同步寫回瀏覽器:
    基於SSM的POI導入導出Excel實戰第二篇-導出EXCEL

  4. 其中,我們這裏用到了sheetProductName跟excelProductName,顧名思義,分別爲:下載的Excel中sheet的命名以及下載的Excel的名稱。這兩個屬性是採用動態配置的方式配置爲配置文件application.properties中的 如下所示:

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

  1. 最終,我們實現的效果如下所示:

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

好了,這就是我們POI實戰第二篇:到處Excel,若有相關問題可以加上面我的個人聯繫方式諮詢我!!!

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