java中的Excel导出功能

Wesley13
• 阅读 587
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导出功能

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
PHP导入导出EXCELl,CSV
PHP导入导出Excel,CSVHTML<formaction"{:U('Admin/Unit/importcsv')}"method"post"name"myform"id"myform"enctype"multipart/formdata"<input
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
Java 复杂excel报表导出
MyExcel,是一个可直接使用Html文件,或者使用内置的Freemarker、Groovy、Beetl等模板引擎Excel构建器生成的Html文件,以Html文件中的Table作为Excel模板来生成任意复杂布局的Excel的工具包,支持.xls、.xlsx格式,支持对背景色、边框、字体等进行个性化设置,支持合并单元格。Github:https:/
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这