javascript
SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)
有天上飛的概念,就要有落地的實現
-
概念十遍不如代碼一遍,朋友,希望你把文中所有的代碼案例都敲一遍
-
先贊后看,養成習慣
來源:Springboot使用POI實現導出Excel文件示例的搜索結果-阿里云開發者社區
SpringBoot 圖文教程系列文章目錄
SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」
SpringBoot圖文教程2—日志的使用「logback」「log4j」
SpringBoot圖文教程3—「‘初戀’情結」集成Jsp
SpringBoot圖文教程4—SpringBoot 實現文件上傳下載
SpringBoot圖文教程5—SpringBoot 中使用Aop
SpringBoot圖文教程6—SpringBoot中過濾器的使用
SpringBoot圖文教程7—SpringBoot攔截器的使用姿勢這都有
SpringBoot圖文教程8—SpringBoot集成MBG「代碼生成器」
前言
Excel文件的導入導出功能,在項目中可以說是一個極其常見的功能了,使用到這技術的業務場景也非常多,例如:客戶信息的導入導出,運營數據的導入導出,訂單數據的導入導出等等。
那么在 SpringBoot 中如何使用 Poi 呢?從本文開始將會說三種使用 Poi 的姿勢:Apache Poi,EasyPoi,阿里開源的EasyExcel。
話不多說,馬上開始。
集成 Poi
什么是 Poi
Apache Poi 是 Apache 的一個開源項目,用Java代碼通過 poi 技術可以實現 讀取 和 生成 Excel 文檔。
關于 Poi 的簡介非常的少,接下來我們簡單說一些和Excel相關的常識
通過 office Excel軟件或者 wps 常用的Excel格式有兩種:xls 和 xlsx
上圖中的兩個文件都是Excel文件,在一個Excel文件中包含若干張表
一張表中可以分為很多行 row ,每行又分為很多單元格 cell
Poi 對?Excel?抽象出來的對象
剛才簡單的說過了Excel文件相關的情況,但是那是在電腦中使用Excel需要用到的東西,如果要通過 SpringBoot 導入導入 Excel 文件,就要通過類和方法來進行。
于是在 Poi 中對以上提到的所有的名詞都做了一定的封裝。對應關系如下:
| Excel 文件 | HSSFWorkbook (xls)XSSFWorkbook(xlsx) |
| Excel 的工作表 | HSSFSheet |
| Excel 的行 | HSSFRow |
| Excel 中的單元格 | HSSFCell |
| Excel 字體 | HSSFFont |
| Excel 單元格樣式 | HSSFCellStyle |
| Excel 顏色 | HSSFColor |
| 合并單元格 | CellRangeAddress |
Poi 的基本使用
要導出的實體類 如下:
image.png
1. 在項目中導入依賴
?<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.14</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.14</version></dependency>2. 在測試類中寫導出的代碼如下:
????/***?導出數據*/@Testpublic?void?test2()?throws?IOException?{ //????????0.準備數據User?user?=?new?User();user.setUserId(1);user.setUserName("hhhh");user.setUserSex("男");String[]?titles?=?{"編號","名字","性別"};/***?先寫入?標題欄數據*/ //????????1.創建文件對象???創建HSSFWorkbook只能夠寫出為xls格式的Excel //????????要寫出?xlsx?需要創建為?XSSFWorkbook?兩種Api基本使用方式一樣HSSFWorkbook?workbook?=?new?HSSFWorkbook();//????????2.創建表對象HSSFSheet?sheet?=?workbook.createSheet("users");//????????3.創建標題欄(第一行)??參數為行下標??行下標從0開始HSSFRow?titleRow?=?sheet.createRow(0);//????????4.在標題欄中寫入數據for?(int?i?=?0;?i?<?titles.length;?i++)?{ //????????????創建單元格HSSFCell?cell?=?titleRow.createCell(i);cell.setCellValue(titles[i]);}/***?寫入用戶數據*/ //???????5?創建行?如果是用戶數據的集合?需要遍歷HSSFRow?row?=?sheet.createRow(1);//???????6?將用戶數據寫入到行中row.createCell(0).setCellValue(user.getUserId());row.createCell(1).setCellValue(user.getUserName());row.createCell(2).setCellValue(user.getUserSex());//????????文件保存到本地?參數為要寫出的位置workbook.write(new?FileOutputStream("/Users/k/Desktop/hhh.xls"));}生成的Excel文件如下
3. Excel導入
??/***?文件導入??實際上就是文件導出反向操作*/@Testpublic?void?test3()?throws?Exception?{ //????????1.通過流讀取Excel文件FileInputStream?inputStream?=?new?FileInputStream("/Users/k/Desktop/hhh.xls"); //????????2.通過poi解析流?HSSFWorkbook?處理流得到的對象中?就封裝了Excel文件所有的數據HSSFWorkbook?workbook?=?new?HSSFWorkbook(inputStream); //????????3.從文件中獲取表對象??getSheetAt通過下標獲取HSSFSheet?sheet?=?workbook.getSheetAt(0); //????????4.從表中獲取到行數據??從第二行開始?到?最后一行??getLastRowNum()?獲取最后一行的下標int?lastRowNum?=?sheet.getLastRowNum();for?(int?i?=?1;?i?<=?lastRowNum;?i++)?{ //????????????通過下標獲取行HSSFRow?row?=?sheet.getRow(i); //????????????從行中獲取數據/***?getNumericCellValue()?獲取數字*?getStringCellValue?獲取String*/double?id?=?row.getCell(0).getNumericCellValue();String?name?=?row.getCell(1).getStringCellValue();String?sex?=?row.getCell(2).getStringCellValue();//????????????封裝到對象中User?user?=?new?User();user.setUserId((int)?id);user.setUserName(name);user.setUserSex(sex);//????????????將對象添加數據庫System.out.println(user);}}總結
Tips:本文只講解了 Poi 最基本的使用方式 如果需要其他更加全面的使用方式
可以關注后續文章 Easypoi 和 EasyExcel 以及 Poi中文 API 文檔 「40種操作 Excel文件的姿勢」
恭喜你完成了本章的學習,為你鼓掌!如果本文對你有幫助,請幫忙點贊,評論,轉發,這對作者很重要,謝謝。
讓我們再次回顧本文的學習目標
-
掌握SpringBoot中Poi的使用
要掌握SpringBoot更多的用法,請持續關注本系列教程。
求關注,求點贊,求轉發
歡迎關注本人公眾號:鹿老師的Java筆記,將在長期更新Java技術圖文教程和視頻教程,Java學習經驗,Java面試經驗以及Java實戰開發經驗。
lai
總結
以上是生活随笔為你收集整理的SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot集成EasyPoi实
- 下一篇: 标准工资是什么意思 关乎每个人的收入