日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot 導出數據生成excel文件返回方式

瀏覽:145日期:2022-06-16 17:14:38
一、基于框架

1.IDE

IntelliJ IDEA

2.軟件環境

Spring boot

mysql

mybatis

org.apache.poi

二、環境集成

1.創建spring boot項目工程

略過

2.maven引入poi

<!--數據導出依賴 excel--><!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version></dependency><!--數據導出依賴 End excel-->三、代碼實現

此處以導出云端mysql數據中的用戶表為例(數據為虛假數據)

1.配置xls表格表頭

此處我創建一個class(ColumnTitleMap)來維護需要導出的mysql表和xls表頭顯示的關系

代碼注釋已經清晰明了,就不再贅述

/** * @desc:數據導出,生成excel文件時的列名稱集合 * @author: chao * @time: 2018.6.11 */public class ColumnTitleMap { private Map<String, String> columnTitleMap = new HashMap<String, String>(); private ArrayList<String> titleKeyList = new ArrayList<String> (); public ColumnTitleMap(String datatype) { switch (datatype) { case 'userinfo': initUserInfoColu(); initUserInfoTitleKeyList(); break; default: break; } } /** * mysql用戶表需要導出字段--顯示名稱對應集合 */ private void initUserInfoColu() { columnTitleMap.put('id', 'ID'); columnTitleMap.put('date_create', '注冊時間'); columnTitleMap.put('name', '名稱'); columnTitleMap.put('mobile', '手機號'); columnTitleMap.put('email', '郵箱'); columnTitleMap.put('pw', '密碼'); columnTitleMap.put('notice_voice', '語音通知開關'); columnTitleMap.put('notice_email', '郵箱通知開關'); columnTitleMap.put('notice_sms', '短信通知開關'); columnTitleMap.put('notice_push', '應用通知開關'); } /** * mysql用戶表需要導出字段集 */ private void initUserInfoTitleKeyList() { titleKeyList.add('id'); titleKeyList.add('date_create'); titleKeyList.add('name'); titleKeyList.add('mobile'); titleKeyList.add('email'); titleKeyList.add('pw'); titleKeyList.add('notice_voice'); titleKeyList.add('notice_email'); titleKeyList.add('notice_sms'); titleKeyList.add('notice_push'); } public Map<String, String> getColumnTitleMap() { return columnTitleMap; } public ArrayList<String> getTitleKeyList() { return titleKeyList; }}

2.controller

提供對外接口,ExportDataController.java

package com.mcrazy.apios.controller;import com.mcrazy.apios.service.ExportDataService;import com.mcrazy.apios.service.UserInfoService;import com.mcrazy.apios.util.datebase.columntitle.ColumnTitleMap;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpServletResponse;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * @desc:數據導出api控制器 * @author: chao * @time: 2018.6.11 */@Controller@RequestMapping(value = '/exportdata')public class ExportDataController { @Autowired UserInfoService userInfoService; @Autowired ExportDataService exportDataService; /** * @api: /apios/exportdata/excel/ * @method: GET * @desc: 導出數據,生成xlsx文件 * @param response 返回對象 * @param date_start 篩選時間,開始(預留,查詢時并未做篩選數據處理) * @param date_end 篩選時間,結束(預留,查詢時并未做篩選數據處理) */ @GetMapping(value = '/excel') public void getUserInfoEx( HttpServletResponse response, @RequestParam String date_start, @RequestParam String date_end ) { try { List<Map<String,Object>> userList = userInfoService.queryUserInfoResultListMap(); ArrayList<String> titleKeyList= new ColumnTitleMap('userinfo').getTitleKeyList(); Map<String, String> titleMap = new ColumnTitleMap('userinfo').getColumnTitleMap(); exportDataService.exportDataToEx(response, titleKeyList, titleMap, userList); } catch (Exception e) { // System.out.println(e.toString()); } }}

3.service

(1).用戶表數據

UserInfoMapper.java

package com.mcrazy.apios.mapper;import com.mcrazy.apios.model.UserInfo;import org.apache.ibatis.annotations.Mapper;import java.util.List;import java.util.Map;@Mapperpublic interface UserInfoMapper { /** * @desc 查詢所有用戶信息 * @return 返回多個用戶List * */ List<Map<String,Object>> queryUserInfoResultListMap();}

UserInfoMapper.xml

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd' ><mapper namespace='com.mcrazy.apios.mapper.UserInfoMapper'> <select resultType='HashMap'> select * from user_info </select></mapper>

UserInfoService.java

package com.mcrazy.apios.service;import com.mcrazy.apios.mapper.UserInfoMapper;import com.mcrazy.apios.model.UserInfo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;import java.util.Map;@Servicepublic class UserInfoService { @Autowired UserInfoMapper userInfoMapper; /** * @desc 查詢所有用戶信息 * @return 返回多個用戶List * */ public List<Map<String,Object>> queryUserInfoResultListMap() { List<Map<String,Object>> list = userInfoMapper.queryUserInfoResultListMap(); return list; }}

(2). 生成excel文件和導出

ExportDataService.java

package com.mcrazy.apios.service;import com.mcrazy.apios.util.datebase.ExportExcelUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * @desc:數據導出服務 * @author: chao * @time: 2018.6.11 */@Servicepublic class ExportDataService { @Autowired ExportExcelUtil exportExcelUtil; /*導出用戶數據表*/ public void exportDataToEx(HttpServletResponse response, ArrayList<String> titleKeyList, Map<String, String> titleMap, List<Map<String,Object>> src_list) { try { exportExcelUtil.expoerDataExcel(response, titleKeyList, titleMap, src_list); } catch (Exception e) { System.out.println('Exception: ' + e.toString()); } }}

導出工具封裝,ExportExcelUtil.java

package com.mcrazy.apios.util.datebase;import com.mcrazy.apios.util.object.DateUtils;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.streaming.SXSSFWorkbook;import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * @desc:數據導出,生成excel文件 * @author: chao * @time: 2018.6.12 */@Servicepublic class ExportExcelUtil { public void expoerDataExcel(HttpServletResponse response, ArrayList<String> titleKeyList, Map<String, String> titleMap, List<Map<String,Object>> src_list) throws IOException { String xlsFile_name = DateUtils.currtimeToString14() + '.xlsx'; //輸出xls文件名稱 //內存中只創建100個對象 Workbook wb = new SXSSFWorkbook(100); //關鍵語句 Sheet sheet = null; //工作表對象 Row nRow = null; //行對象 Cell nCell = null; //列對象 int rowNo = 0; //總行號 int pageRowNo = 0; //頁行號 for (int k=0;k<src_list.size();k++) { Map<String,Object> srcMap = src_list.get(k); //寫入300000條后切換到下個工作表 if(rowNo%300000==0){ wb.createSheet('工作簿'+(rowNo/300000));//創建新的sheet對象 sheet = wb.getSheetAt(rowNo/300000); //動態指定當前的工作表 pageRowNo = 0; //新建了工作表,重置工作表的行號為0 // -----------定義表頭----------- nRow = sheet.createRow(pageRowNo++); // 列數 titleKeyList.size() for(int i=0;i<titleKeyList.size();i++){ Cell cell_tem = nRow.createCell(i); cell_tem.setCellValue(titleMap.get(titleKeyList.get(i))); } rowNo++; // --------------------------- } rowNo++; nRow = sheet.createRow(pageRowNo++); //新建行對象 // 行,獲取cell值 for(int j=0;j<titleKeyList.size();j++){ nCell = nRow.createCell(j); if (srcMap.get(titleKeyList.get(j)) != null) { nCell.setCellValue(srcMap.get(titleKeyList.get(j)).toString()); } else { nCell.setCellValue(''); } } } response.setContentType('application/vnd.ms-excel;charset=utf-8'); response.setHeader('Content-disposition', 'attachment;filename=' + xlsFile_name); response.flushBuffer(); OutputStream outputStream = response.getOutputStream(); wb.write(response.getOutputStream()); wb.close(); outputStream.flush(); outputStream.close(); }}三、運行

至此,所有代碼工作已經做完,把程序運行起來,在瀏覽器調用接口,會自動下載到電腦中

瀏覽器打開:

http://192.168.1.70:8080/apios/exportdata/excel/?time_start=2018-12-19&end_start=2018-12-19

效果

SpringBoot 導出數據生成excel文件返回方式

SpringBoot 導出數據生成excel文件返回方式

得到xlsx文件,查看數據

SpringBoot 導出數據生成excel文件返回方式

以上這篇SpringBoot 導出數據生成excel文件返回方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: excel
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
捆绑调教美女网站视频一区| 国产三级一区| 午夜日韩av| 久久久亚洲欧洲日产| 免费国产亚洲视频| 丝袜美腿一区二区三区| 精品视频一区二区三区四区五区| 日韩精品一区二区三区中文字幕| 亚洲三级精品| 久久99蜜桃| 精精国产xxxx视频在线野外| 99视频精品视频高清免费| 日韩视频在线一区二区三区 | 免费日本视频一区| 中文字幕高清在线播放| 精品成人18| 激情婷婷久久| 午夜久久av| 国产一区二区三区四区| 麻豆精品99| 久久精品亚洲一区二区| 精品视频91| 亚洲成人一区在线观看| 欧美日韩国产免费观看视频| 青青草精品视频| 免费一二一二在线视频| 国产精品国产三级国产在线观看| 欧美网站在线| 99热精品在线观看| 9久re热视频在线精品| 亚洲一区av| 欧美日韩一区二区国产| 国产成人77亚洲精品www| 91看片一区| 好吊视频一区二区三区四区| 亚洲欧美日韩在线观看a三区| 美女视频黄免费的久久| 电影91久久久| 极品日韩av| 婷婷亚洲精品| 美女久久99| 精品一区在线| 亚洲精品免费观看| 欧美激情麻豆| 国产第一亚洲| 亚洲制服少妇| 国产精品一国产精品k频道56| 久久国产直播| 国产99在线| 日韩精品a在线观看91| 欧美一区二区性| 日韩一级不卡| 国产探花在线精品| 精精国产xxxx视频在线野外| 亚洲国产一区二区三区在线播放| 亚洲精品在线a| 欧美国产一级| 中文字幕成人| 日韩高清成人| 在线亚洲观看| 国产一区二区视频在线看| 欧美日韩国产欧| 久久不见久久见免费视频7| 久久婷婷丁香| 国产日韩欧美高清免费| 欧美另类专区| 精品一区电影| 亚洲精品韩国| 久久精品影视| 国产精品免费99久久久| 中文亚洲欧美| 日本一二区不卡| 亚洲天堂日韩在线| 日本综合精品一区| 日韩一级不卡| 久久精品系列| av资源亚洲| 一区二区国产精品| 久久激情一区| 97久久超碰| 免费在线观看成人| 国产精品tv| 欧美aa在线观看| 日韩在线短视频| 日韩av在线免费观看不卡| 国产精品99视频| 欧美日韩精品一区二区三区视频| 成人羞羞视频在线看网址| 日韩区一区二| 日韩高清中文字幕一区二区| 国产欧美一区二区精品久久久| 亚洲欧洲一区| 久久夜夜操妹子| 久久精品资源| 久久精品xxxxx| 在线观看亚洲精品福利片| 久久精选视频| 日产精品一区二区| 欧美激情视频一区二区三区免费| 亚洲精品系列| 国产一区二区高清| 久久国产影院| 日韩1区2区| 精品一区二区三区中文字幕视频 | 波多野结衣一区| zzzwww在线看片免费| 国产精品啊v在线| 日韩精品1区2区3区| 视频一区二区三区入口| 欧美日韩国产一区精品一区| 日韩精品一区二区三区免费观看| 精品国产欧美日韩| 久久国产视频网| 日韩激情中文字幕| 蜜臀a∨国产成人精品| 欧美 日韩 国产精品免费观看| 高清一区二区三区av| 久久99影视| 日韩三级一区| 日韩高清欧美激情| 亚洲精品九九| 日韩三级一区| 日韩和欧美一区二区三区| 蜜桃久久精品一区二区| 香蕉久久夜色精品国产| 国产美女精品| 美女精品在线| 免费精品视频在线| 亚洲视频电影在线| 中文视频一区| 久久香蕉精品| 日韩中文一区二区| 日本va欧美va欧美va精品| 久久国产88| 亚洲精品三级| 日韩高清不卡在线| 国产精品一区2区3区| 久久免费精品| 国产一区2区| 日韩深夜视频| 神马午夜久久| 午夜欧美视频| 视频在线观看一区二区三区| 综合激情网站| 欧美精品福利| 国产一区二区三区天码| 国产传媒在线| 久久九九国产| 亚洲国产专区| 三级在线观看一区二区| 四虎精品一区二区免费| 国产伦乱精品| 大香伊人久久精品一区二区| 亚洲a一区二区三区| 99亚洲精品| 久久激情五月婷婷| 粉嫩av一区二区三区四区五区 | 亚洲午夜久久久久久尤物| 婷婷亚洲综合| 亚洲日产av中文字幕| 国产午夜一区| 女生影院久久| 黄色欧美日韩| 日韩精品免费观看视频| 精品国产中文字幕第一页| 91精品综合| 一区二区高清| 免费一区二区三区在线视频| 亚洲午夜天堂| 亚洲一区中文| 国产精选一区| 久久视频国产| 国产日韩专区| 久久不见久久见中文字幕免费| 99久久激情| 视频一区日韩精品| 精品国产麻豆| 欧美午夜不卡影院在线观看完整版免费| 亚洲精品黄色| 久久久久免费| 视频一区视频二区在线观看| 国产精品美女在线观看直播| 91精品国产调教在线观看 | 国产亚洲一区二区三区啪| 精品视频91| 香蕉久久国产| 高清久久一区| 亚洲精品免费观看| 电影天堂国产精品| 四虎精品永久免费| 成人va天堂| 久久国内精品| 欧美精品自拍| 精品九九久久| 免费人成在线不卡| 色在线视频观看| 日韩精品a在线观看91| 日韩精品免费一区二区在线观看| 日韩亚洲精品在线观看| 国产高潮在线|