图片仅供参考

霸气钢铁侠

Thinking:我发现上班时,当一个程序员飞速的敲着代码,大部分情况不是在认真工作,多半是在微信聊天,只有当他键盘敲几下,之后一直在操作鼠标,然后在敲几下键盘,这个时候应该是在认真工作,因为他应该是遇到了难题在百度。

开始步入正题

1.导入 jar 包

org.apache.poi

poi

3.17

org.apache.poi

poi-ooxml

3.17

2.工具类

package cn.superfw.genesis.fw.utils;

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.HorizontalAlignment;

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> 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> getData() {

return data;

}

public void setData(List> 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(HorizontalAlignment.CENTER);//水平居中

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(HorizontalAlignment.CENTER);

style.setVerticalAlignment(VerticalAlignment.CENTER);

//设置字体

HSSFFont font = wb.createFont();

font.setFontHeightInPoints((short) this.fontSize);

style.setFont(font);

//在第1行创建rows

HSSFRow 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(HorizontalAlignment.CENTER);

cellParamStyle.setVerticalAlignment(VerticalAlignment.CENTER);

ParamFontStyle.setColor(HSSFColor.DARK_RED.index); //设置字体颜色 (红色)

ParamFontStyle.setFontHeightInPoints((short) this.fontSize);

cellParamStyle.setFont(ParamFontStyle);

//设置每格数据的样式2(字体蓝色)

HSSFCellStyle cellParamStyle2 = wb.createCellStyle();

cellParamStyle2.setAlignment(HorizontalAlignment.CENTER);

cellParamStyle2.setVerticalAlignment(VerticalAlignment.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) {

//取出的数据是Integer

value = String.valueOf(((Integer) (valueObject)).floatValue());

} else if (valueObject instanceof BigDecimal) {

//取出的数据是BigDecimal

value = 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");

}

}

}

3.实现类

/**

* 参数中的 map 是前端传过来的查询条件,不重要

*

*/

public void exportExcel (@RequestBody Map map, HttpServletResponse response, HttpServletRequest request) throws IOException {

//省略无用代码若干行。。。。。。

//省略的是我项目中所需的逻辑需求,没有必要看了

//以下为重点

String sheetTitle = "维护工单";

//查询数据

//根据自己的需求查询出数据,因为我用的 jpa 的 @Query 做的查询,直接就是List>类型,用实体类接行不行我也太清楚,懒得操作了。

List> maps = jobManageService.getExcelData(name,applicants,applyType,safeAuditPerson,branchAuditPersion);

//导出excel

//以下就不用多解释了吧,有手就行了。

if(maps!=null && maps.size()>0){

String [] title = new String[]{"派工单编号","设备编号","设备名称","设备类型","所属构筑物","维护人员","派工日期","维护级别","计划完成时间"}; //设置表格表头字段

String [] properties = new String[]{"assignmentNo","equipNo","equipName","deviceType","structureName","serviceManName","assignmentTime","serviceLevelName"};

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);

}

}

4.来张效果图

虽然有点丑,但是确实是成功了。

美化,就靠各位自己发挥了,反正我是不会。

效果图

最后来张美照收尾

安妮海瑟薇

java导出excle表格数据,java导出Excel表格相关推荐

  1. matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...

  2. php修改excel表格数据,php修改excel表格数据-php怎么导入Excel表格到数据库,根据表格内的字段......

    php怎么导入Excel表格到数据库,根据表格内的字段... 昨天项目里有个新知需求,客户希望把一些数据能导出成为Excel表格道,刚开始用PHP原生输入Excel表格,发现效果不是很理想,于是找到一 ...

  3. 计算机表格怎样筛选男女,excel表格数据男女筛选-EXCEL表格中选择性别怎么做 就是如何做筛选 ,比如......

    如何将一张EXCEL表格中同时符合2个条件的数据筛选... 利用excel的数据有效性功能可以达到目标,以下步骤以excel2007为例. 1.首先在电脑上打开目标表格文件,选中目标单元格. 2.然后 ...

  4. 计算机高配置表格,数据大的excel表格对显卡有要求-求excel大量数据处理的电脑配置...

    EXCEL表格数据太大运行很卡,怎样处理 处理办法: [我的电脑],打开[资源管理器],点击[菜单栏]中]菜单下的[文件夹选项]. 在刚打开的[文件夹选项]中选择[文件类型]. 在[已注册的文件类型] ...

  5. python 显示表格数据_python显示excel表格数据-怎么用python读取excel表格的数据

    怎么用python读取excel表格的数据 #导入包 import xlrd #设置路径 path='C:\\Users\\jyjh\\Desktop\\datap.xlsx' #打开 data=xl ...

  6. 计算机一级总产量怎么算,excel表格数据增长百分比-Excel表格如何计算产量增减百分比?...

    Excel表格如何计算产量增减百分比? 1.在excel的单中输入需要计长比例的数据. 2.然后在C1单元格内输入计算:=(B1-A1)/A1. 3.点击回车,即可将计算公式生成结果,此时计算结果显示 ...

  7. txt中的数据导入matlab中画图,excel怎样导入表格数据-如何将excel表格中大量数据导入matlab中并作图...

    Excel中如何将另一表格中的数据对应导入 1开表格,在上方功能栏点击据". 2.点入数据. 3.点击数据来源. 4择想要的导入的数据文件,就好了. 如何将TXT文档中的数据直接导入到Exc ...

  8. java代码将树形数据输出为excel表格(可以渲染无限级)

    这次的解决方案是采用Springboot项目+swagger+druid连接池+oracle数据库,如有需要请自行更换数据库 pom #jdk版本 <properties><java ...

  9. wps表格保存html,网页中的数据怎么导入excel表格数据-怎么把网页数据导入到wps表格中...

    如何采集网页中的表格数据到Excel中 1.打开excel表格 2.打开菜单"数据"->入外部数据"->" Web 查询",在" ...

  10. vue下载excel表格模板和导入excel表格数据

    vue下载excel表格模板和导入excel表格数据 vue制作excel表格模板给前端下载 vue制作excel表格模板给前端下载 最近有个需求,需要导入excel表格,并且还需要制作模板给用户下载 ...

最新文章

  1. c语言面向对象编程中的类_C ++中的面向对象编程
  2. 深度学习100+经典模型TensorFlow与Pytorch代码实现大合集
  3. [YTU]_2631( B1 能存各种类型数据的Store类)
  4. 程序员究竟能干多少年?用数据说话!
  5. form表单中,file选择图片后预览
  6. centOS下安装jdk1.8
  7. Linux连接xshell时连不上的问题【转载】
  8. QT调用OpenCV
  9. layui 表单 验证整数
  10. 一篇很感人的DOTA小说--我本近卫
  11. 收货地址表结构 以及创建修改流程
  12. 给IT新人的15点建议
  13. 正则匹配手机号和座机号包括分机号
  14. [技巧]QQ密技(一)
  15. Java 线上问题排查思路与工具使用
  16. 西南大学通信学硕成功上岸,初试专业课113分(专业课最高分)
  17. 使用openssl命令 生成指定有效时间的ssl证书,cer格式
  18. 表达式转换 (中缀转后缀表达式)
  19. Oracle——2.查询基本语法
  20. 2022/04/29 第一次晋升答辩总结

热门文章

  1. 苹果手机还原网络设置会怎样_苹果手机信号不好怪基带?1分钟修改3个开关,轻松翻倍网速...
  2. 使用hibernate需要注意什么
  3. 微信小程序之scroll-view
  4. Python 中的理解力。它们是什么?为什么要使用它们?
  5. 日期处理类org.apache.commons.lang3.time.DateUtils
  6. Airfoil 5.8.4 特别版 Mac 多平台音频同步播放神器
  7. manjaro Linux上安装360浏览器的方法
  8. Ubuntu搜狗输入法美化与修复
  9. hacktoberfest_Hacktoberfest和其他有趣的事情将在本周末在freeCodeCamp
  10. excel制定工作计划公式