使用POI导出数据到excel代码

POM文件

<!-- 导出excel -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version>
</dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version>
</dependency>

工具类

ExcelExportUtil

package cn.zhen.excel.util;import com.google.common.base.Strings;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;public class ExcelExportUtil {//表头private String title;//各个列的表头private String[] heardList;//各个列的元素key值private String[] heardKey;//需要填充的数据信息private List<Map> data;//字体大小private int fontSize = 14;//行高private int rowHeight = 30;//列宽private int columWidth = 200;//工作表private String sheetName = "sheet1";public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String[] getHeardList() {return heardList;}public void setHeardList(String[] heardList) {this.heardList = heardList;}public String[] getHeardKey() {return heardKey;}public void setHeardKey(String[] heardKey) {this.heardKey = heardKey;}public List<Map> getData() {return data;}public void setData(List<Map> data) {this.data = data;}public int getFontSize() {return fontSize;}public void setFontSize(int fontSize) {this.fontSize = fontSize;}public int getRowHeight() {return rowHeight;}public void setRowHeight(int rowHeight) {this.rowHeight = rowHeight;}public int getColumWidth() {return columWidth;}public void setColumWidth(int columWidth) {this.columWidth = columWidth;}public String getSheetName() {return sheetName;}public void setSheetName(String sheetName) {this.sheetName = sheetName;}/*** 开始导出数据信息**/public byte[] exportExport(HttpServletRequest request, HttpServletResponse response) throws IOException {//检查参数配置信息checkConfig();//创建工作簿HSSFWorkbook wb = new HSSFWorkbook();//创建工作表HSSFSheet wbSheet = wb.createSheet(this.sheetName);//设置默认行宽wbSheet.setDefaultColumnWidth(20);// 标题样式(加粗,垂直居中)HSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中//TODO cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中HSSFFont fontStyle = wb.createFont();fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);fontStyle.setBold(true);   //加粗fontStyle.setFontHeightInPoints((short)16);  //设置标题字体大小cellStyle.setFont(fontStyle);//在第0行创建rows  (表标题)HSSFRow title = wbSheet.createRow((int) 0);title.setHeightInPoints(30);//行高HSSFCell cellValue = title.createCell(0);cellValue.setCellValue(this.title);cellValue.setCellStyle(cellStyle);wbSheet.addMergedRegion(new CellRangeAddress(0,0,0,(this.heardList.length-1)));//设置表头样式,表头居中HSSFCellStyle style = wb.createCellStyle();//设置单元格样式style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置字体HSSFFont font = wb.createFont();font.setFontHeightInPoints((short) this.fontSize);style.setFont(font);//在第1行创建rowsHSSFRow row = wbSheet.createRow((int) 1);//设置列头元素HSSFCell cellHead = null;for (int i = 0; i < heardList.length; i++) {cellHead = row.createCell(i);cellHead.setCellValue(heardList[i]);cellHead.setCellStyle(style);}//设置每格数据的样式 (字体红色)HSSFCellStyle cellParamStyle = wb.createCellStyle();HSSFFont ParamFontStyle = wb.createFont();cellParamStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);cellParamStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);ParamFontStyle.setColor(HSSFColor.DARK_RED.index);   //设置字体颜色 (红色)ParamFontStyle.setFontHeightInPoints((short) this.fontSize);cellParamStyle.setFont(ParamFontStyle);//设置每格数据的样式2(字体蓝色)HSSFCellStyle cellParamStyle2 = wb.createCellStyle();cellParamStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);cellParamStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);HSSFFont ParamFontStyle2 = wb.createFont();ParamFontStyle2.setColor(HSSFColor.BLUE.index);   //设置字体颜色 (蓝色)ParamFontStyle2.setFontHeightInPoints((short) this.fontSize);cellParamStyle2.setFont(ParamFontStyle2);//开始写入实体数据信息int a = 2;for (int i = 0; i < data.size(); i++) {HSSFRow roww = wbSheet.createRow((int) a);Map map = data.get(i);HSSFCell cell = null;for (int j = 0; j < heardKey.length; j++) {cell = roww.createCell(j);cell.setCellStyle(style);Object valueObject = map.get(heardKey[j]);String value = null;if (valueObject == null) {valueObject = "";}if (valueObject instanceof String) {//取出的数据是字符串直接赋值value = (String) map.get(heardKey[j]);} else if (valueObject instanceof Integer) {//取出的数据是Integervalue = String.valueOf(((Integer) (valueObject)).floatValue());} else if (valueObject instanceof BigDecimal) {//取出的数据是BigDecimalvalue = String.valueOf(((BigDecimal) (valueObject)).floatValue());} else {value = valueObject.toString();}//设置单个单元格的字体颜色if(heardKey[j].equals("ddNum") || heardKey[j].equals("sjNum")){if((Long)map.get("ddNum")!=null){if((Long)map.get("sjNum")==null){cell.setCellStyle(cellParamStyle);} else if((Long) map.get("ddNum") != (Long) map.get("sjNum")){if ((Long) map.get("ddNum") > (Long) map.get("sjNum")) {cell.setCellStyle(cellParamStyle);}if ((Long) map.get("ddNum") < (Long) map.get("sjNum")) {cell.setCellStyle(cellParamStyle2);}}else {cell.setCellStyle(style);}}}cell.setCellValue(Strings.isNullOrEmpty(value) ? "" : value);}a++;}//导出数据try {//设置Http响应头告诉浏览器下载这个附件response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls");OutputStream outputStream = response.getOutputStream();wb.write(outputStream);outputStream.close();return wb.getBytes();} catch (Exception ex) {ex.printStackTrace();throw new IOException("导出Excel出现严重异常,异常信息:" + ex.getMessage());}}/*** 检查数据配置问题** @throws IOException 抛出数据异常类*/protected void checkConfig() throws IOException {if (heardKey == null || heardList.length == 0) {throw new IOException("列名数组不能为空或者为NULL");}if (fontSize < 0 || rowHeight < 0 || columWidth < 0) {throw new IOException("字体、宽度或者高度不能为负值");}if (Strings.isNullOrEmpty(sheetName)) {throw new IOException("工作表表名不能为NULL");}}
}

server层

ExcelExportServiceImpl

 @Overridepublic void queryProjectInfoBySchemeId(HttpServletResponse response,                                        HttpServletRequest request, String schemeId,                                              String pushDate) throws IOException {//数据List<Map> maps = new ArrayList<>();   Map<String,String> map1 = new HashMap();map1.put("city","振式集团");map1.put("projectName","振振爱御姐");map1.put("ddNum","100w");map1.put("sjNum","99w");Map<String,String> map2 = new HashMap();map1.put("city","振式集团子公司");map1.put("projectName","振振爱萝莉");map1.put("ddNum","100w");map1.put("sjNum","99w");maps.add(map1);maps.add(map2);if(maps!=null && maps.size()>0){//表头String companyName = "公司项目汇总";String sheetTitle = companyName;//数据描述String [] title = new String[]{"城市","项目名字","合同","实际"};    // 查询对应的字段String [] properties = new String[]{"city","projectName","ddNum","sjNum"};                ExcelExportUtil excelExport2 = new ExcelExportUtil();excelExport2.setData(maps);excelExport2.setHeardKey(properties);excelExport2.setFontSize(14);excelExport2.setSheetName(sheetTitle);excelExport2.setTitle(sheetTitle);excelExport2.setHeardList(title);excelExport2.exportExport(request, response);}

Contorller层

自行书写

使用POI导出数据到excel代码相关推荐

  1. Java使用poi导出数据到excel(包括xls和xlsx两种格式)并通过浏览器下载

    情景:将数据导出到excel是java开发常用的功能,数据量不大的时候,xls和xlsx两种格式的文件都行,但是数据量太大的时候就有区别了,xls格式的文件一个sheet页最多只能存六万多条数据,而x ...

  2. POI导出数据至Excel,cpu飙升 cpu占用很高,原因排查

    零 干货满满 1测试环境开启GC日志 -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+HeapDumpBeforeFull ...

  3. php导出excel数据代码,phpspreadsheet导出数据到Excel的方法介绍(代码示例)

    本篇文章给大家带来的内容是关于phpspreadsheet导出数据到Excel的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 之前我们使用PHP导出Excel数 ...

  4. 灰色模型代码GM(1,1),从excel导入数据,亦可导出数据到excel中。

    灰色模型代码GM(1,1),从excel导入数据,亦可导出数据到excel中. 总结1:直接输出结果 %clc W= MicrosoftExcel;(从EXCEL导入数据后,matlab自动储存的数组 ...

  5. Java导出数据到Excel文件

    Java导出数据到Excel文件 前言 如何导出 导出的基本流程 测试结果 测试数据及结果 测试代码 ExcelExportUtil.class 遇到的问题 lombok的问题 解决 Cell.set ...

  6. 基于EasyExcel锁定指定列导出数据到excel

    基于EasyExcel锁定指定列导出数据到excel 大家好,我是llp.最近在做系统报表时中有一个需求时这样的,需要查询系统数据导出excel,并要求导出的excel列中有一些时锁定的有一些时不锁定 ...

  7. java导出文件到excel文件怎么打开_Java导出数据到Excel文件

    Java导出数据到Excel文件需要的jar包:easypoi-0.1.3.jar, poi-3.7-20101029 package com.sais.inkaNet.reportStatistic ...

  8. poi导出word与excel模版

    这里推荐一个比较好的poi导出word模版,http://m.blog.csdn.net/liushimiao0104/article/details/78520120 但需要注意的是导入的jar包, ...

  9. java导出为excel文件_java导出数据到excel文件

    有的时候,将一些有用的数据导出到excel是很有必要的.比如说,我现在在做一个学校的在线教学平台,有一个需求是:将学生成绩导出到excel文件中去. 那怎样实现用java导出数据到excel文件呢?? ...

最新文章

  1. 如何在阿里云上安全的存放您的配置 - 续
  2. 工业环境中对机器学习的行业视角
  3. 【迁移学习(Transfer L)全面指南】Domain-Adversarial Training:基于对抗的迁移学习方法
  4. 怎样删除word里的形状
  5. 殊途同归的CVE-2012-0774 TrueType字体整数溢出漏洞分析
  6. eclipse javascript_原生js实现贪吃蛇游戏_javascript技巧
  7. jquery跳出当前的each循环的方式
  8. 文本框输入限制【不允许空格、只允许数字】
  9. service 层 拼接的html 代码如何直接返回_代码分层的设计之道
  10. 在.NET Core 3.0中发布单个Exe文件(PublishSingleFile)
  11. cf Round 613
  12. 对应到对象 数据库驼峰_从源码角度理解Mybatis字段映射(一) - 驼峰式命名
  13. 利用CSS3的transform做的动态时钟
  14. 安装pyHive报错
  15. 时序分析 30 金融资产预测 - 蒙特卡洛模拟
  16. IE(11)浏览器清理缓存方法
  17. 计算机exsl表f4代表锁定,(Excel中F4是什么键)笔记本锁定单元格f4怎么按
  18. 算法与数据结构学习资料及面试
  19. win10 UWP 你写我读
  20. 删除电脑被占用的串口

热门文章

  1. postgresql建表带注释_PostgreSQL创建表
  2. 计算机接口中 可以直接进行插拔操作的是,计算机应用基础题库及答案二
  3. showdoc windows 搭建_第七星尘的独立博客
  4. 关于将tomcat卸载干净
  5. 华为openEuler 安装Docke教程
  6. 泛函分析 05.03 共轭空间和共轭算子 - Hilbert空间的共轭空间,共轭算子
  7. BCEloss、MSEloss
  8. java字符串整齐输出
  9. 沉锂母液回收—含锂料液锂富集
  10. 微信小程序中的华为适配解决