springboot poi匯出excel表格
第一步導包:
maven倉庫:https://mvnrepository.com/artifact/org.apache.poi/poi/3.17
maven方式:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
gradle方式:
// https://mvnrepository.com/artifact/org.apache.poi/poi
compile group: 'org.apache.poi', name: 'poi', version: '3.17'
首先我們要構造一個excel表結構:由於很多其他的博文會給excel表的字型、樣式下功夫.導致小白會覺得有點畫蛇添足,我們先考慮完成匯出excel表這個需求才能考慮繼續深造。
構造一個表從兩方面考慮,一方面是結構,一方面是資料。
下面這個工具欄提供的方法很簡單,就是傳入一個excel表名,excel每一列的列名,一個資料集,以及在資料集中每個欄位對映的key,其實也可以不用傳這個key,但是為了表結構更加清晰,以及更容易獲取資料,我們傳多一個key陣列。
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.util.List;
import java.util.Map;
/**
* 生成Excel檔案的工具類
* @author weiyuwang
*/
public class ExcelUtil {
/**
* 建立excel文件,
* @param excelName excel的表名
* @param list 資料,相當於每一行,而map的key代表了單元格的欄位,value則是值
* @param keys list中map的key陣列集合
* @param columnNames excel的列名
* */
public static Workbook createWorkBook(String excelName,List<Map<String, Object>> list, String[] keys, String[] columnNames) {
// 建立excel工作簿
HSSFWorkbook wb = new HSSFWorkbook();
// 建立第一個sheet(頁),並命名
Sheet sheet = wb.createSheet(excelName);
// 建立第一行
Row firstRow = sheet.createRow(0);
//設定列名
for(int i=0;i<columnNames.length;i++){
Cell cell = firstRow.createCell(i);
cell.setCellValue(columnNames[i]);
}
//設定每行每列的值
for (int i = 0; i < list.size(); i++) {
// Row 行,Cell 方格 , Row從1開始,因為第一行用來存放了列名,cell從0開始
// 建立一行,在頁sheet上
Row row = sheet.createRow( i+1);
// 在row行上建立一個方格
for(int j=0;j<keys.length;j++){
Cell cell = row.createCell(j);
cell.setCellValue(list.get(i).get(keys[j]) == null?" ": list.get(i).get(keys[j]).toString());
}
}
return wb;
}
}
接下來是controller
,這裡一開始我用的是post方法,但是這種方法本地不知道怎麼測試,後來我改成了get方法,將post方法註釋了。
其實表結構確定了,接下來主要是資料的封裝。也就是要構建一個List<Map<String, Object>> datas
,由於每個人要封裝的資料不一樣,這裡就不對mapper,entity
再做敘述。
其實我個菜雞一直不知道原來這裡也可以用response的,所以看了很多相關博文都不知道怎麼下手,然後走投無路嘗試了一下發現可以用hhh。這裡我點一下,避免一些和我一樣在努力學習但是還是比較菜的小夥伴不知道。
/**
* export excel
*/
@RequestMapping(value = "/export")
// public void export(@RequestBody GoalExportEntity request,HttpServletResponse response) {
public void export(HttpServletResponse response) {
String excelName = "公司指標";
String[] columnName = new String[]{"考核物件","總計","1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
String[] keys = new String[]{"name","total","1","2","3","4","5","6","7","8","9","10","11","12"};
try{
//設定excel表的資料:
List<Map<String, Object>> datas = new ArrayList<>();
// List<GoalSettingEntity> list = goalMapper.findByIdAndYearCombine(request.getGoalId(), request.getYear());
List<GoalSettingEntity> list = goalMapper.findByIdAndYearCombine(13, 2018);
for (GoalSettingEntity entity : list) {
Map<String, Object> map = JsonUtil.toObjectMap((entity.getGoalInfo()));
Integer total = 0;
for (Object s : map.values()) {
total += (Integer)s;
}
map.put("total", total.toString());
map.put("name",entity.getName());
datas.add(map);
}
Workbook workBook = ExcelUtil.createWorkBook(excelName, datas, keys, columnName);
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=createList.xls");//預設Excel名稱
response.flushBuffer();
ServletOutputStream outputStream = response.getOutputStream();
workBook.write(outputStream);
workBook.close();
outputStream.close();
} catch (Exception e){
e.printStackTrace();
}
}
相關文章
- poi的excel匯出Excel
- Springboot操作Poi進行Excel匯入Spring BootExcel
- SpringBoot實現Excel匯入匯出,好用到爆,POI可以扔掉了!Spring BootExcel
- poi 匯出Excel java程式碼ExcelJava
- js匯出Excel表格JSExcel
- vue匯出Excel表格VueExcel
- Java之POI操作Excel表-匯入匯出JavaExcel
- POI匯出excel檔案加水印Excel
- vue + element + 匯入、匯出excel表格VueExcel
- POI的使用及匯出excel報表Excel
- vue+elementUI表格匯出excelVueUIExcel
- Vue實現匯出excel表格VueExcel
- vue將表格匯出為excelVueExcel
- element-UI庫Table表格匯出Excel表格UIExcel
- vue匯出excel資料表格功能VueExcel
- vue實現前端匯出excel表格Vue前端Excel
- 前端常用方法之匯出excel表格前端Excel
- 不想用POI?幾行程式碼完成Excel匯出匯入行程Excel
- Element-ui元件庫Table表格匯出Excel表格UI元件Excel
- 騰訊文件怎樣匯出excel表格 騰訊文件如何匯出excelExcel
- Java之POI操作,封裝ExcelUtil實現Excel匯入匯出Java封裝Excel
- Vue匯出資料到Excel電子表格VueExcel
- vue2.0 匯出Excel表格資料VueExcel
- Java POI匯入Excel檔案JavaExcel
- POI匯入Excel中文API文件ExcelAPI
- node 抓取api資料匯出為excel表格APIExcel
- vue+elementUI el-table匯出excel表格VueUIExcel
- SpringBoot利用java反射機制,實現靈活讀取Excel表格中的資料和匯出資料至Excel表格Spring BootJava反射Excel
- SpringBoot+Vue之表格的CRUD與匯入匯出Spring BootVue
- vue匯出excel表格步驟以及易出錯點VueExcel
- poi 匯出 例項
- vue+element將資料匯出成excel表格VueExcel
- php如何將資料匯出成excel表格呢?PHPExcel
- java 匯入到EXCEL表格JavaExcel
- java實現Excel定製匯出(基於POI的工具類)JavaExcel
- SpringBoot圖文教程10—Excel模板匯出|百萬資料匯出|圖片匯出「easypoi」Spring BootExcel
- SpringBoot+Mybatis-plus整合easyExcel批次匯入Excel到資料庫+匯出ExcelSpring BootMyBatisExcel資料庫
- 將資料庫中資料匯出為excel表格資料庫Excel