java poi将每一个cell设置为文本格式

1、在导出excel文件时候,默认导出的数字一般都是数值格式,容易形成科学计数法。

所以我们需要在导出的时候将文件设置为文本格式,比较符合需求。

CellStyle css = wb.createCellStyle();
DataFormat  format = wb.createDataFormat();
css.setDataFormat(format.getFormat("@"));
cell.setCellStyle(css);

需要这四行代码就可以实现设置文本格式,看一下我导出excel文件的模板

/**
   * 没有表头
   * @param response
   * @param fileName
   * @param dataRowList
   * @throws Exception
   */
  public static void exportExcelNotTitle(HttpServletResponse response, String fileName,
                                 List<?> dataRowList) throws Exception {

    int sheetIndex = 0;
    final int maxRow = 65000;

    final HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet();
    wb.setSheetName(sheetIndex, "Sheet-" + (sheetIndex + 1));

    CellStyle css = wb.createCellStyle();
    DataFormat  format = wb.createDataFormat();
    css.setDataFormat(format.getFormat("@"));
    int rowNum = 0;
    for (final Object dataRow : dataRowList) {

      if (rowNum == maxRow) {
        sheet = wb.createSheet();
        wb.setSheetName(sheetIndex, "Sheet-" + (sheetIndex + 1));
        rowNum = 0;
      }
      HSSFRow row = sheet.createRow(rowNum);
      int cellIndex = 0;
      Class<?> aClass = dataRow.getClass();
      Field[] fields = aClass.getDeclaredFields();
      //反射遍历对象所有属性
      for (final Field field : fields) {
        String name = field.getName();
        Method method = aClass.getMethod("get" + name.substring(0, 1).toUpperCase() + name.substring(1));
        Object data = method.invoke(dataRow);
        HSSFCell cell = row.createCell(cellIndex);
        Object value = data;
        if (value == null) {
          value = "";
        }
        if (value instanceof Date) {
          cell.setCellValue(DateUtils.formatDateTime((Date) value, "yyyy-MM-dd HH:mm:ss"));
        } else {
          cell.setCellValue(value.toString());
        }
//设置文本格式
        cell.setCellStyle(css);
        cellIndex++;
      }
      rowNum++;
    }

    wb.write(getExcelOutputStream(response, fileName));
  }

  public static OutputStream getExcelOutputStream(HttpServletResponse response, String fileName)
      throws Exception {
    return getOutputStream(response, "application/vnd.ms-excel;charset=utf-8", fileName);
  }


 public static OutputStream getOutputStream(HttpServletResponse response, String contentType,
                                             String fileName) throws
      IOException {
    response.setContentType(contentType);
    response.setHeader("Content-Disposition",
        "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));

    return response.getOutputStream();
  }

private static HSSFSheet createSheet(HSSFWorkbook wb, int sheetIndex, List<String> titles) {
    HSSFSheet sheet = wb.createSheet();
    wb.setSheetName(sheetIndex, "Sheet-" + (sheetIndex + 1));
    if (titles != null && titles.size() > 0) {
      HSSFRow row = sheet.createRow(0);
      for (int i = 0; i < titles.size(); ++i) {
        final String title = titles.get(i);
        HSSFCell cell = row.createCell(i);
        cell.setCellValue(title);
      }
    }
    return sheet;
  }

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值