public void exportExcel(Long activityId, HttpServletResponse response) throws IOException
{
// 获取统计报表信息
List<ProductInfo> productInfoList = reportDao.queryStatisticReport(activityId);
// 创建一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个工作表sheet
HSSFSheet sheet = workbook.createSheet("统计报表");
// 设置单元格每列的宽度
sheet.setColumnWidth(0, 50 * 256);
sheet.setColumnWidth(1, 50 * 256);
sheet.setColumnWidth(2, 10 * 256);
    // 表格信息内容的样式
HSSFCellStyle style = workbook.createCellStyle();
// 水平居中
style.setAlignment(HorizontalAlignment.CENTER);
// 垂直居中
style.setVerticalAlignment(VerticalAlignment.CENTER);
// 行数
int rowCount = 0;
// 第一行的标题行
HSSFRow row0 = sheet.createRow(rowCount++);
// 列表格
HSSFCell cell_title = row0.createCell(0);
cell_title.setCellValue("统计报表");
// 标题样式
HSSFCellStyle style_title = workbook.createCellStyle();
style_title.setAlignment(HorizontalAlignment.CENTER);
style_title.setVerticalAlignment(VerticalAlignment.CENTER);
//设置字体样式
HSSFFont font = workbook.createFont();
//字号
font.setFontHeightInPoints((short) 16);
// 红色字体
font.setColor(HSSFFont.COLOR_RED);
style_title.setFont(font);
cell_title.setCellStyle(style_title);
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
// 第二行的表头
HSSFRow row1 = sheet.createRow(rowCount++);
// 表头样式
HSSFCellStyle style_header = workbook.createCellStyle();
style_header.setAlignment(HorizontalAlignment.CENTER);
style_header.setVerticalAlignment(VerticalAlignment.CENTER);
style_header.setFillForegroundColor(new HSSFColor.SKY_BLUE().getIndex());
style_header.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 列表格
HSSFCell cell_header0 = row1.createCell(0);
cell_header0.setCellValue("展示商品名称");
cell_header0.setCellStyle(style_header);
HSSFCell cell_header1 = row1.createCell(1);
cell_header1.setCellValue("SKU商品名称");
cell_header1.setCellStyle(style_header);
HSSFCell cell_header2 = row1.createCell(2);
cell_header2.setCellValue("数量");
cell_header2.setCellStyle(style_header);
if (!StringUtils.isEmpty(productInfoList))
{
for (ProductInfo productInfo : productInfoList)
{
List<SbomInfo> sbomInfoList = productInfo.getSbomInfoList();
for (int i = 0; i < sbomInfoList.size(); i++)
{
// 行表格
HSSFRow row = sheet.createRow(rowCount);
SbomInfo sbomInfo = sbomInfoList.get(i);
if (i == 0)
{
// 列表格
HSSFCell cell0 = row.createCell(0);
cell0.setCellValue(productInfo.getDisPrdName());
cell0.setCellStyle(style);
// 含有2个以上数据的,则需要合并单元格
if (sbomInfoList.size() > 1)
{
sheet.addMergedRegion(new CellRangeAddress(rowCount, rowCount + sbomInfoList.size() - 1, 0, 0));
}
}
// 列表格
HSSFCell cell1 = row.createCell(1);
cell1.setCellValue(sbomInfo.getSbomName());
cell1.setCellStyle(style);
// 列表格
HSSFCell cell2 = row.createCell(2);
cell2.setCellValue(sbomInfo.getNumber());
cell2.setCellStyle(style);
// 行数增1
rowCount = rowCount + 1;
}
}
}
// 设置文件名
String fileName = "统计报表.xls";
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setHeader("Pragma", "No-cache");
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
workbook.close();
}
导出Excel表格:

  

java中的Excel导出功能的更多相关文章

  1. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  2. Java中导入、导出Excel

    原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已 ...

  3. 我是陌生人 Java中导入、导出Excel

    我是陌生人 Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是: ...

  4. 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

    我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...

  5. 用SpringMvc实现Excel导出功能

    以前只知道用poi导出Excel,最近用了SpringMvc的Excel导出功能,结合jxl和poi实现,的确比只用Poi好,两种实现方式如下: 一.结合jxl实现: 1.引入jxl的所需jar包: ...

  6. excel导出功能优化

    先说说优化前,怎么做EXCEL导出功能的: 1. 先定义一个VO类,类中的字段按照EXCEL的顺序定义,并且该类只能用于EXCEL导出使用,不能随便修改. 2. 将查询到的结果集循环写入到这个VO类中 ...

  7. excel导出功能原型

    本篇博客是记录自己实现的excel导出功能原型,下面我将简单介绍本原型: 这是我自制的窗体,有一个ListView和一个Button(导出)控件. 这是我在网上找到了使用exel需要引用的库. usi ...

  8. java(POI):基于模版的Excel导出功能,局部列写保护总结

    需求描述: 1.导出的Excel中部分列包含有下拉列表,并没有尝试过用代码实现这种功能,个人感觉比较棘手,故采用了模版的形式,直接导出数据到已经创建好的Excel模版中 2.Excel的第一列需要写保 ...

  9. java中的数据导出到Excel表中

    整个项目中导出数据到.Excel的源码 import java.io.BufferedOutputStream; import java.io.FileInputStream; import java ...

随机推荐

  1. [CSP-S模拟测试]:小P的2048(模拟)

    题目描述 最近,小$P$迷上了一款叫做$2048$的游戏.这块游戏在一个$n\times n$的棋盘中进行,棋盘的每个格子中可能有一个形如$2^k(k\in N^*)$的数,也可能是空的.游戏规则介绍 ...

  2. Jquery $().each()与$.each(data,function(i,obj))区别

    在遍历DOM时,通常用$(selector).each(function(index,element))函数: 在遍历数据时,通常用$.each(dataresource,function(index ...

  3. php WebSocket 简单实现demo

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据. 在 ...

  4. postgresql获取表最后更新时间(通过发布订阅机制将消息发送给应用程序)

    一.创建测试表 CREATE TABLE weather( city ), temp_lo int, --最低温度 temp_hi int, --最高温度 prcp real, --湿度 date d ...

  5. 【原创】基于phpGrace+uniApp开发之:5.登录界面增加图片验证码

    1.目的: 采用phpGrace中的图片验证码,在用户名+密码登录时使用图片验证码进行验证. 2.文档地址: 图片验证码的文档地址:http://www.phpgrace.com/tools/info ...

  6. astype()函数

    1astype()函数可用于转化dateframe某一列的数据类型 如下将dateframe某列的str类型转为int,注意astype()没有replace=True的用法,想要在原数据上修改,要写 ...

  7. unity 编辑器教程

    教程1:https://blog.csdn.net/u010019717/article/details/80300136 教程2:https://blog.csdn.net/liqiangeasts ...

  8. Java JDK安装教程以及JDK多版本间快速切换配置

    原本想自己写一篇,结果在网上发现一篇写的特别好的博文,大家可以去原网址围观浏览加点赞, 只是搬运工+迷弟. 原文地址:https://blog.csdn.net/qq_38916130/article ...

  9. 浅谈Java反射机制 之 使用类的 属性、方法和构造函数

    前面两篇我们总结了Java反射机制如何获取类的字节码,如何获取构造函数,属性和方法, 这篇我们将进一步验证如何使用我们获取到的属性.方法以及构造函数 1.使用 反射 获取到的 属性 import ja ...

  10. Java 实现Excel的简单读取操作

    JAVA实现Excel表单的简单读取操作 实现Excel表单的简单读取操作,首先要导入相关的jar包: 如图所示: 此处贴上代码: public static List<List<Stri ...