21xrx.com
2025-03-25 13:27:18 Tuesday
文章检索 我的文章 写文章
Java代码实现Excel导出避免空行问题
2023-06-13 04:54:27 深夜i     12     0
Java代码 Excel导出 空行问题

在Java开发中,我们经常需要将一些数据导出到Excel中,以方便用户查看和分析。然而,在导出Excel时,有时会出现一些空行的问题,这给用户带来不便。为了避免这个问题,我们可以使用下面的Java代码进行Excel导出。

代码实例:

public void exportExcel(List dataList, String[] headers, String[] fields, String fileName) throws Exception {
  InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("template.xlsx");
  XSSFWorkbook workbook = new XSSFWorkbook(is);
  XSSFSheet sheet = workbook.getSheetAt(0);
  XSSFRow headerRow = sheet.createRow(0);
  for (int i = 0; i < headers.length; i++) {
    XSSFCell cell = headerRow.createCell(i);
    cell.setCellValue(headers[i]);
  }
  int rowIndex = 1;
  for (Object data : dataList) {
    XSSFRow dataRow = sheet.createRow(rowIndex++);
    for (int i = 0; i < fields.length; i++) {
      String fieldName = fields[i];
      Object value = ReflectUtil.getFieldValue(data, fieldName);
      XSSFCell cell = dataRow.createCell(i);
      cell.setCellValue(value == null ? "" : value.toString());
    }
  }
  for (int i = 0; i < headers.length; i++) {
    sheet.autoSizeColumn(i);
  }
  HttpServletResponse response = ServletActionContext.getResponse();
  response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
  OutputStream os = response.getOutputStream();
  workbook.write(os);
  os.flush();
  os.close();
}

上面的代码使用了Apache POI实现了Excel导出功能。它从一个模板文件中读取一些格式信息,然后将数据填充到模板中,并输出到浏览器中供用户下载。在填充数据时,我们通过判断每个单元格的值是否为null来避免了出现空行的问题。

  
  

评论区

    相似文章