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. COUNT 和 IFNULL函数

    用COUNT函数: mysql> SELECT count(one) FROM tb_test;+------------+| count(http://www.amjmh.com/v/BIBR ...

  2. optistruct非线性分析步子步设置

    The CNTNLSUB command can be used in the Subcase Information section to continue a nonlinear solution ...

  3. springBoot项目常用maven依赖以及依赖说明

    springBoot项目常用maven依赖以及依赖说明 1:maven-compiler-plugin <build> <plugins> <!-- 指定maven编译的 ...

  4. wow64 32位进程中切换64位模式,取回64位寄存器值

    32位dbg中编辑的: 7711E9D3 | 6A | | 7711E9D5 | E8 | 7711E9DA | | | 7711E9DE | CB | ret far | 6A E8 CB 64位d ...

  5. c# access oledb helper class

    连接Access数据库 using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...

  6. JS在页面输出九九乘法表

    <!--小练习,练习使用循环实现一个九九乘法表 第一步,最低要求:在Console中按行输出 n * m = t 然后,尝试在网页中,使用table来实现一个九九乘法表 --> <! ...

  7. spring切换环境变量——@Profile注解的使用

    在容器中如果存在同一类型的多个组件,也可以使用@Profile注解标识要获取的是哪一个bean,这在不同的环境使用不同的变量的情景特别有用.例如,开发环境.测试环境.生产环境使用不同的数据源,在不改变 ...

  8. HttpModule 介绍

    引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了Http请求在服务器端的处理流程,随后我们知道Http请求最终会由实现了IHttpHandler接口的类进 ...

  9. Python解决ModuleNotFoundError: No module named 'Queue'的问题

    我们知道Python2和Python3两个版本之间,有些不兼容的地方,Python3中引入Queue会报出这个问题. Python3中要这样引入: import queue Python2中要这样引入 ...

  10. 【MM系列】SAP MM模块-委外采购订单 把Warning转换成Error信息提示

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-委外采购订单 把W ...