电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式

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

1.IDE

IntelliJ IDEA

2.軟件環(huán)境

Spring boot

mysql

mybatis

org.apache.poi

二、環(huán)境集成

1.創(chuàng)建spring boot項目工程

略過

2.maven引入poi

<!--數(shù)據(jù)導(dǎo)出依賴 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><!--數(shù)據(jù)導(dǎo)出依賴 End excel-->三、代碼實現(xiàn)

此處以導(dǎo)出云端mysql數(shù)據(jù)中的用戶表為例(數(shù)據(jù)為虛假數(shù)據(jù))

1.配置xls表格表頭

此處我創(chuàng)建一個class(ColumnTitleMap)來維護(hù)需要導(dǎo)出的mysql表和xls表頭顯示的關(guān)系

代碼注釋已經(jīng)清晰明了,就不再贅述

/** * @desc:數(shù)據(jù)導(dǎo)出,生成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用戶表需要導(dǎo)出字段--顯示名稱對應(yīng)集合 */ 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', '語音通知開關(guān)'); columnTitleMap.put('notice_email', '郵箱通知開關(guān)'); columnTitleMap.put('notice_sms', '短信通知開關(guān)'); columnTitleMap.put('notice_push', '應(yīng)用通知開關(guān)'); } /** * mysql用戶表需要導(dǎo)出字段集 */ 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:數(shù)據(jù)導(dǎo)出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: 導(dǎo)出數(shù)據(jù),生成xlsx文件 * @param response 返回對象 * @param date_start 篩選時間,開始(預(yù)留,查詢時并未做篩選數(shù)據(jù)處理) * @param date_end 篩選時間,結(jié)束(預(yù)留,查詢時并未做篩選數(shù)據(jù)處理) */ @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).用戶表數(shù)據(jù)

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文件和導(dǎo)出

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:數(shù)據(jù)導(dǎo)出服務(wù) * @author: chao * @time: 2018.6.11 */@Servicepublic class ExportDataService { @Autowired ExportExcelUtil exportExcelUtil; /*導(dǎo)出用戶數(shù)據(jù)表*/ 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()); } }}

導(dǎo)出工具封裝,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:數(shù)據(jù)導(dǎo)出,生成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文件名稱 //內(nèi)存中只創(chuàng)建100個對象 Workbook wb = new SXSSFWorkbook(100); //關(guān)鍵語句 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));//創(chuàng)建新的sheet對象 sheet = wb.getSheetAt(rowNo/300000); //動態(tài)指定當(dāng)前的工作表 pageRowNo = 0; //新建了工作表,重置工作表的行號為0 // -----------定義表頭----------- nRow = sheet.createRow(pageRowNo++); // 列數(shù) 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(); }}三、運行

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

瀏覽器打開:

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

效果

SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式

SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式

得到xlsx文件,查看數(shù)據(jù)

SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式

以上這篇SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: excel
相關(guān)文章:
主站蜘蛛池模板: 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 陕西华春网络科技股份有限公司| 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 小型气象站_车载气象站_便携气象站-山东风途物联网 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 深圳货架厂家_金丽声精品货架_广东金丽声展示设备有限公司官网 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 我车网|我关心的汽车资讯_汽车图片_汽车生活! | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 一点车讯-汽车网站,每天一点最新车讯! | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | 湖南成人高考报名-湖南成考网| 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 多功能干燥机,过滤洗涤干燥三合一设备-无锡市张华医药设备有限公司 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 |