java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java poi导出Excel下载到客户端

Java poi导出Excel下载到客户端

作者:紫薇帝星的故事

这篇文章主要为大家详细介绍了Java poi导出Excel下载到客户端的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Java poi 导出Excel并下载到客户端,具体内容如下

Maven配置,包含了其他文件格式的依赖,就全贴出来了

<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-excelant</artifactId>
      <version>3.12</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-scratchpad</artifactId>
      <version>3.12</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.8</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>3.8</version>
    </dependency>

Service层

@Override
  public void export(Long sblsh, String excelName, OutputStream out) {
    try {
      // 第一步,创建一个webbook,对应一个Excel文件 
      HSSFWorkbook wb = new HSSFWorkbook();
      //生成一个表格 
      HSSFSheet sheet = wb.createSheet(excelName); 
      // 第三步,在sheet中添加表头第0行
      HSSFRow row = sheet.createRow(0);
      
      // 第四步,创建单元格,并设置值表头 设置表头居中 
      HSSFCellStyle style = wb.createCellStyle(); 
      style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
      HSSFCell cell = row.createCell(0);
      cell.setCellStyle(style);
      
      Byte kjzz = qyjbxxMapper.getKjzz(sblsh);
      List<A> record = this.selectBySblsh(sblsh);
        this.insertData(wb, sheet, row, record, out);
      }
    } catch (Exception e) {
      logger.info(e.getMessage());
    }
  }
  
  /**
   * 导入数据到表格中
   * @param wb execl文件
   * @param sheet 表格
   * @param row 表格行
   * @param record 要导出的数据
   * @param out 输出流
   */
  private void insertData(HSSFWorkbook wb,HSSFSheet sheet,HSSFRow row,List<A> record,
      OutputStream out){
    try {
      row = sheet.createRow(1);
      for(int i=0;i<title.length;i++){
        row.createCell(i).setCellValue(title[i]);
      }
      for(int i=0;i<record.size();i++){
        row = sheet.createRow(i+2);
        A data = record.get(i);
        row.createCell(0).setCellValue(data.getHc());
        row.createCell(1).setCellValue(data.getXm());
        BigDecimal je = data.getJe();
        if(je!=null){
          row.createCell(2).setCellValue(je.doubleValue());
        }
      }
      //合并单元格,前面2位代表开头结尾行,后面2位代表开头结尾列
      CellRangeAddress region = new CellRangeAddress(0,0,0,title.length-1);
      sheet.addMergedRegion(region);
      wb.write(out);
      out.flush();
      out.close();
      wb.close();
    } catch (Exception e) {
      logger.info(e.getMessage());
    }
  }

Controller

@RequestMapping("/export")
  public void export(Long sblsh, HttpServletRequest request, HttpServletResponse response){
    response.setContentType("octets/stream");
    String excelName = "文件名";
    try {
      response.addHeader("Content-Disposition", "attachment;filename="+new String(excelName.getBytes("gb2312"), "ISO8859-1" )+".xls");
      OutputStream out = response.getOutputStream();
      aService.export(sblsh,excelName ,out);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文