代码中是用的HSSFWorkbook类,操作2003-2007excel,后缀为.xls

如过要生成2010的excel,后缀为.xlsx。可以用XSSFWorkbook

贴上代码

import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import ext.pdmdev.documentary.bean.Bean;
import ext.pdmdev.documentary.bean.TechnologyStatement;/*** 公司 凯锐远景* @author 作者 slj:* @version 创建时间:2018年11月22日 上午11:02:37* 类说明* 创建excel工具类*/
public class CreateHSSFWorkbookUtil {static Logger log=LoggerFactory.getLogger(CreateHSSFWorkbookUtil.class);/*** 创建HSSFWorkbook对象* @param sheetName  * @param headList  list表头字段名称的集合* @param dataList set数据无序不重复* @return* @throws NoSuchMethodException* @throws SecurityException* @throws IllegalAccessException* @throws IllegalArgumentException* @throws InvocationTargetException*/public static HSSFWorkbook createExcel(String sheetName,List<String> headList,Set<?> dataList) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet(sheetName);HSSFRow row = sheet.createRow(0);HSSFCell cell = null;//设置表头HSSFCellStyle columnTopStyle =getColumnTopStyle(wb);for(int k=0;k<headList.size();k++){//设置列宽if(k == 0){sheet.setColumnWidth( k, 2048);}else{sheet.setColumnWidth(k, 10240);}cell=row.createCell(k);cell.setCellStyle(columnTopStyle); //给表头设置样式cell.setCellValue(headList.get(k)); }int i=1;for (Object tech:dataList){//创建行HSSFRow hssfRow = sheet.createRow(i);//通过反射获取实体类字段集合Field[] fields=tech.getClass().getDeclaredFields();//通过反射获取实体类方法集合Method[] methods=tech.getClass().getMethods();//通过实体类字段个数创建列for(int j=0;j<fields.length;j++){//创建列cell=hssfRow.createCell(j);HSSFCellStyle columnStyle =getStyle(wb);cell.setCellStyle(columnStyle);cell.setCellValue(String.valueOf(i)); //设置默认值Field filed=fields[j];String filedName=filed.getName();String filedGetMethodName="get"+filedName;//动态调用实体类方法设置值for(Method me:methods){String methodName=me.getName();if(methodName.toLowerCase().equals(filedGetMethodName.toLowerCase())){String result=null;//反射通过方法名获取方法Method target=tech.getClass().getMethod(methodName);//执行方法result = (String) target.invoke(tech);cell.setCellValue(result);}}}i++;}return wb;}/* * 列头单元格样式*/    public static HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {// 设置字体HSSFFont font = workbook.createFont();//设置字体大小font.setFontHeightInPoints((short)16);//字体加粗font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置字体名字 font.setFontName("Courier New");//设置样式; HSSFCellStyle style = workbook.createCellStyle();//设置底边框; style.setBorderBottom(HSSFCellStyle.BORDER_THIN);//设置底边框颜色;  style.setBottomBorderColor(HSSFColor.BLACK.index);//设置左边框;   style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//设置左边框颜色; style.setLeftBorderColor(HSSFColor.BLACK.index);//设置右边框; style.setBorderRight(HSSFCellStyle.BORDER_THIN);//设置右边框颜色; style.setRightBorderColor(HSSFColor.BLACK.index);//设置顶边框; style.setBorderTop(HSSFCellStyle.BORDER_THIN);//设置顶边框颜色;  style.setTopBorderColor(HSSFColor.BLACK.index);//在样式用应用设置的字体;  style.setFont(font);//设置自动换行; //style.setWrapText(false);//设置水平对齐的样式为居中对齐;  style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置垂直对齐的样式为居中对齐; style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);return style;}/*  * 列数据信息单元格样式*/  public static HSSFCellStyle getStyle(HSSFWorkbook workbook) {// 设置字体HSSFFont font = workbook.createFont();//设置字体大小//font.setFontHeightInPoints((short)10);//字体加粗//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置字体名字 font.setFontName("Courier New");//设置样式; HSSFCellStyle style = workbook.createCellStyle();//设置底边框; style.setBorderBottom(HSSFCellStyle.BORDER_THIN);//设置底边框颜色;  style.setBottomBorderColor(HSSFColor.BLACK.index);//设置左边框;   style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//设置左边框颜色; style.setLeftBorderColor(HSSFColor.BLACK.index);//设置右边框; style.setBorderRight(HSSFCellStyle.BORDER_THIN);//设置右边框颜色; style.setRightBorderColor(HSSFColor.BLACK.index);//设置顶边框; style.setBorderTop(HSSFCellStyle.BORDER_THIN);//设置顶边框颜色;  style.setTopBorderColor(HSSFColor.BLACK.index);//在样式用应用设置的字体;  style.setFont(font);//设置自动换行; style.setWrapText(false);//设置水平对齐的样式为居中对齐;  style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置垂直对齐的样式为居中对齐; style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);return style;}/*** 直接在页面生成excel(下载)* @param args* @throws IOException */public static void downloadExcel(HSSFWorkbook wk,HttpServletResponse response) throws IOException{//防止中文乱码String headStr = "attachment; filename=\"" + new String( "技术状态情况统计表.xls".getBytes("gb2312"), "ISO8859-1" ) + "\"";//response.setContentType("octets/stream");response.setContentType("APPLICATION/OCTET-STREAM");response.setHeader("Content-Disposition", headStr);OutputStream out = response.getOutputStream();//下载wk.write(out);out.flush();out.close();log.debug("-----------下载结束-----");}public static void main(String[] args) {}
}

将java封装的实体类数据生成excel供下载相关推荐

  1. java封装对象实体类_Java 接口自动化系列--实体类之entity封装

    实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...

  2. phpexcel生成excel并下载

    Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...

  3. 【微信小程序】生成excel并下载 | 微信 | excel | 文件下载 |

    生成excel并下载 有一个需求就是通过微信云数据库导出数据到excel并且下载到本地.首先对这个任务进行分解. 一 通过云数据库读取数据生成excel 在前端页面index.wxml添加按钮,绑定函 ...

  4. JxlExcelUtil生成Excel供SFTP推送Java实现获取目录下最新的excel

    外汇交易中心,某版本需求变更:交易后将每天定时生成的全量黄金成交编号映射关系文件推送至金交所. 设计: 定时任务跑批实现. 1.根据传入的参数是否是给黄金交易所判断 isSFTP.传参, 以下方法组装 ...

  5. java动态生成excel_java动态生成excel打包下载

    @SuppressWarnings("unchecked")public String batchExport() throwsDBException{ @SuppressWarn ...

  6. java poi 换行_Java利用POI生成Excel强制换行

    前一段时间在做一个学校排课系统时,有一个地方需要利用把课程表生成excel汇出给客户,由于之前用excel都只是简单的应用,在单元格里都是用自动换行,而这次可能需要用到手动强制换行. 于是我在网上找了 ...

  7. 根据excel列动态创建mysql表_根据数据库字段动态生成excel模版下载,上传模版获取数据存入数据库(poi 反射)...

    环境:mysql5.7.28 java8 Spring boot 2.2.4 mybatis-plus3.10 动态:根据需求,用户可以选择对应的字段生成excle模版 下载 poi 反射:poi是e ...

  8. java后台生成excel_Java后台生成Excel前台下载

    Java后台通过poi生成HSSFWorkbook 对生成HSSFWorkbook 类型处理 转为文件流通过response 返回到前台 HSSFWorkbook hw = null; try{ hw ...

  9. Java在Controller生成Excel供前端直接下载

    在许多企业办公系统中,经常会有用户要求,需要对数据进行统计并且可以直接下载Excel文件,这样子的话,既然客户提出了要求,我们就应该去满足吖,毕竟客户是上帝嘛,那么我们如何去实现呢?且看我为你一一道来 ...

  10. java pdf stamper_java 通过pdf模板,生成PDF,并下载到本地-Go语言中文社区

    注意:本例子是从向模板定义的变量赋值,而不是从无到有的来生成pdf 直接就能用 maven依赖: com.lowagie itext 4.2.1 工具类: package com.upincar.pd ...

最新文章

  1. 基于数据库数据增量同步_基于canal实现分布式数据同步
  2. 字符统计2_JAVA
  3. 七大排序算法的个人总结(三)
  4. 爬虫 spider07——爬取腾讯娱乐新闻
  5. python特征工程插件_手把手教你用Python实现自动特征工程
  6. Qt实现延时sleep函数功能
  7. 忙碌的三月,小感慨下~
  8. 信息学奥赛一本通(1030:计算球的体积)
  9. SpringCloud实战小贴士:版本依赖关系
  10. 年初至今主动权益基金平均亏损2.96%
  11. vmware linux虚拟机网络配置
  12. 浏览器主页被hao123、360导航之类的流氓网址劫持解决方法
  13. 操作系统-文件读写过程
  14. Linux攻关之基础模块十四 文件查找
  15. 软件评测师题库--程序语言基础知识
  16. 微信群活码以及微信活码防封如何实现技术分享
  17. 【测绘程序设计】——地形图图幅号计算
  18. No safe place 无处容身 | 经济学人中英双语对照精读笔记
  19. 京东云开放“技术百宝箱”,零售商家说今年618就靠它了!
  20. 嵌入式开发学习笔记6-了解单片机中的特殊功能寄存器(定时器/计数器)

热门文章

  1. 靠这篇竟然理解了CAN协议!实战STM32
  2. Pig的安装及基本使用
  3. 「译」开发者如何提升和推销自己
  4. simulink常用模块
  5. c 脚本语言作用,什么是脚本,脚本语言?
  6. 请教刷机教程9008线刷
  7. 按洲划分的国家和地区代码整理 包含:中文名 英文名 洲 首字母 两位英文代码 三位英文代码 三位数据代码 洲
  8. idea彩虹括号+区域代码高亮插件
  9. 百合网推试爱机器人,人工智能+婚恋的起点?
  10. PaddleOCR实现高精度车牌识别