美文网首页
POI导出到Excel文档

POI导出到Excel文档

作者: yunqing_71 | 来源:发表于2020-02-12 11:48 被阅读0次
    String fileName = ExcelUtil
                    .encodeFilename( "questionManage" + CommonUtils.dateFormat(new Date(), "yyyyMMdd") + ".xlsx", request);
            response.setContentType("application/octet-stream;charset=iso-8859-1");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            // 客户端不缓存
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");
    

    1.设置导出的建议文件名

    String fileName = '导出的Excel文档.xlsx';

    2.在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

    //这里设置成二进制流数据(如常见的文件下载)
    response.setContentType("application/octet-stream;charset=iso-8859-1");

    //Content-Disposition参数是为了在客户端另存文件时提供一个建议的文件名
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

    //为了指示浏览器(客户端)不要缓存页面,通常下面两行合用
    response.addHeader("Pargam", "no-cache");
    response.addHeader("Cache-Control", "no-cache");

    3.加载类路径下Excel模板文件

    ClassPathResource classPathResource = new ClassPathResource("templates/myExcel.xlsx");
    

    4.定义Excel文档对象

    //获取文件输入流
    InputStream fis = null;
    //获取Excel文档对象
    Workbook wb = null;
    //获取Execl的sheet页
    Sheet sheet = null;
    //行
    Row row;
    //列
    Cell cell;
    
    //获取文件输入流
    fis = classPathResource.getInputStream();
    //根据输入流创建表格文件
    wb = WorkbookFactory.create(fis);
    //获取report的sheet页
    sheet = wb.getSheet("report");
    

    5.填充数据

     // 获取首行,设置标题
    titleRow = sheet.getRow(0);
    // 获取第一行第一列的表格
    cell = titleRow .getCell(0);
    //给第一行第一列填充信息
    cell.setCellValue(cell.getStringCellValue() + projInfo.getProjName());
    // 获取第二行
    row = sheet.getRow(1);
    //第二行第九列的表格
    cell = row.getCell(8);
    //第二行第九列的表格填充信息
    cell.setCellValue(reportVo.getReporterName());
    //第二行地十三列表格填充信息
    cell = row.getCell(12);
    cell.setCellValue(startDate + "至" + endDate);
    
    

    6.写出文件

    //重设sheet页名字
    wb.setSheetName(1, startDate + "至" + endDate);
    //写出execl文档到response
    wb.write(response.getOutputStream());
    //关闭输出流
    response.getOutputStream().flush();
    response.getOutputStream().close();
    

    7.设置边线框和自动换行

    // 设置加边框线
    CellStyle cellStyle = wb.createCellStyle();
    cellStyle.setBorderTop(BorderStyle.THIN);
    cellStyle.setBorderRight(BorderStyle.THIN);
    cellStyle.setBorderBottom(BorderStyle.THIN);
    cellStyle.setBorderLeft(BorderStyle.THIN);
    // 自动换行
    cellStyle.setWrapText(true);
    
    //记得在每一行的每一列设置样式
    cell.setCellStyle(cellStyle);
    

    8.如果模板有想要填充的行和列则获取get

    ClassPathResource classPathResource = new ClassPathResource("templates/exportfile/question.xlsx");
    fis = classPathResource.getInputStream();
    //根据输入流创建表格文件
    wb = WorkbookFactory.create(fis);
    //获取第一个sheet页
    sheet = wb.getSheetAt(0);
    //获取第一行
    row = sheet.getRow(0);
    //获取第一列
    cell = row.getCell(0);
    

    9.如果模板没有要填充的行和列则创建create

    ClassPathResource classPathResource = new ClassPathResource("templates/exportfile/question.xlsx");
    fis = classPathResource.getInputStream();
    //根据输入流创建表格文件
    wb = WorkbookFactory.create(fis);
    //获取第一个sheet页
    sheet = wb.getSheetAt(0);
    //创建第一行
    row = sheet.createRow(0);
    //创建第一列
    cell = row.createCell(0);
    

    相关文章

      网友评论

          本文标题:POI导出到Excel文档

          本文链接:https://www.haomeiwen.com/subject/dqyqfhtx.html