/**
* 输出Excel文档
*
* @param response
* @param sheetName 文件名称
* @param firstCellTile 第一行的标题
* @param cells 列名集合
* @param cellData 每列数据集合,应该和列名对应起来
* @throws IOException
*/
public static void createExcel(HttpServletResponse response, String sheetName, String firstCellTile,
List<String> cells, List<Object[]> cellData) throws IOException {
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet(sheetName);
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
HSSFRow row1 = sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
HSSFCell cell = row1.createCell(0);
//设置单元格内容
cell.setCellValue(firstCellTile);
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (cells.size() - 1)));
//在sheet里创建第二行
HSSFRow row2 = sheet.createRow(1); //创建单元格并设置单元格内容
for (int i = 0; i < cells.size(); i++) {
row2.createCell(i).setCellValue(cells.get(i));
}
//创建单元格并设置单元格内容
for (int i = 0; i < cellData.size(); i++) {
//在sheet里从第三行开始创建
HSSFRow row3 = sheet.createRow(i + 2);
Object[] obj = cellData.get(i);
for (int k = 0; k < obj.length; k++) {
String type = obj[k].getClass().getName();
if ("java.sql.Timestamp".equals(type)) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
row3.createCell(k).setCellValue(df.format(obj[k]));
} else {
row3.createCell(k).setCellValue(String.valueOf(obj[k]));
}
}
}
//输出Excel文件
OutputStream output = response.getOutputStream();
response.reset();
//中文需要重新编码,不然无法显示中文文件名称
sheetName = new String(sheetName.getBytes(), "ISO-8859-1");
response.setHeader("Content-disposition", "attachment; filename=" + sheetName + ".xls");
response.setContentType("application/msexcel");
wb.write(output);
output.close();
}

cell 数据样式: List list=new ArrayList<>(); list.add("1“);。。。。。

cellData中Object【】数据样式  obj1,obj2,obj3. PS:obj的数组长度应该与cells的长度是一样的。

结果样式:

自动生成Excel 报表工具类的更多相关文章

  1. 使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法

    PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInput ...

  2. python自动生成excel报表

    1.将SQL语句查询的内容,直接写入到excel报表中,以下为全部脚本.要求:此版本必须运维在windows平台,并且安装了excel程序,excel版本不限. python版本为2.7 if b 判 ...

  3. java自动机器人自动生成修姓名工具类

    public class GenerateName { public static String getName() { Random random = new Random(); String[] ...

  4. 下载数据到Excel,工具类

    使用反射将model数据下载到Excel中 package test.upload.utils; import java.lang.reflect.Method; import java.math.B ...

  5. 让Visual Studio 2013为你自动生成XML反序列化的类

    Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改.查找.定位情 ...

  6. 自动生成XML反序列化的类

    原文地址:http://www.cnblogs.com/jaxu/p/3632077.html   Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: ...

  7. 使用POI生成Excel报表

    先把报表模板截图贴上来 下面是POI编写的报表生成类ExcelReport.java package com.jadyer.report; import java.io.FileNotFoundExc ...

  8. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  9. java生成excel报表文件

    此次简单的操作将数据从数据库导出生成excel报表以及将excel数据导入数据库 首先建立数据库的连接池: package jdbc; import java.io.FileInputStream; ...

随机推荐

  1. 微信小程序开发工具 ubuntu linux版本

    安装 http://blog.csdn.net/zhangyingguangails/article/details/72517182 sudo apt install wine sudo git c ...

  2. Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇

    前面已经介绍了Jumpserver V3.0的安装,基于这篇安装文档,下面说下Jumpserver安装后的的功能使用: 一.jumpserver的启动 Jumpserver的启动和重启 [root@t ...

  3. Linux系统入门教程:如何在 Linux 中修改默认的 Java 版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  4. 2丶利用NABCD模型进行竞争性需求分析

    确定项目:公交查询系统 分析小组:在路上 选择比努力更重要.一个项目成功自然离不开组员们的努力.但是,光努力是不够的.还需要用户有需求,能快速实现. 这些东西,看似很虚,却能让我们少走不少弯路.做项目 ...

  5. answer my questions from the book<构建之法>.

    1)何为文档:文档时在一个项目进行的一生中所有记忆的集合.有需求分析.功能设计.在实现功能过程中也可以有一系列文档记录.测试文档等等. 2)结对工作等找队友会花费大量时间致耽误项目否:正如老师所讲,从 ...

  6. MySQLi面向对象实践--select

    对于update.insert.delete请参考http://www.cnblogs.com/-beyond/p/8457580.html 执行select,如果SQL语句执行成功,那么返回的是一个 ...

  7. 关于Nginx+Gunicorn+uwsgi+后端框架到app架构梳理和思考

    今天下午在思考以前一直在疑惑的问题.也就是在拥有nginx这样的服务器存在了为什么还需要uwsgi这样的服务器.他们之间究竟是什么关系. 我一直在疑惑分层的问题,今天也在这里总结写出我的思考. 首先上 ...

  8. ImportError: cannot import name descriptor_pb2

    重新编译protobuf 下载地址:https://github.com/google/protobuf $cd /path/protobuf/python $python setup.py buil ...

  9. spring 文件加载 通过listener的类获取配置文件 并加载到spring容器中

  10. ajax 提交字符串到后台 反序列化

    MVC后台 或者 Webapi 都可以使用此方式 前台 @using (Html.BeginForm("Test","Test")) { <input t ...