zoukankan      html  css  js  c++  java
  • java中的Excel导出功能

    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表格:

      

  • 相关阅读:
    js获取UserControl (<uc1>)控件ID
    NPOI的使用
    Ajax实现页面后台button click事件无刷新弹窗
    java反射中Class对象详解和类名.class, class.forName(), getClass()区别
    反射的笔记
    MyEclipse异常关闭导致启动不了tomcat的解决方法
    java面试题05
    java面试题04
    Spring笔记03(Spring创建对象的三种方式)
    Spring笔记02(3种加载配置文件的方式)
  • 原文地址:https://www.cnblogs.com/hongmoshui/p/9598282.html
Copyright © 2011-2022 走看看