使用SXSSFWorkbook进行excel导出,设置单元格格式为数值,导出后显示为自定义

1、导出用的是SXSSFWorkbook的方式,POI版本为4.01,进行设置单元格格式的时候,预期导出的excel格式显示为数值,结果显示为自定义。

2、百度上找了很多种方法,解决方法可归纳为:

① 使用excel的内嵌格式

cell.setCellValue(1.2);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));

cell.setCellStyle(cellStyle);

② 正常设置格式

cell.setCellValue(1.2);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

HSSFDataFormat format= demoWorkBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("0.00"));

cell.setCellStyle(cellStyle);

③ 在setCellValue之前需要设置CellType为数值类型

cell.setCellType(CellType.NUMERIC);

百度上的这些方法亲测,针对数值格式来说全部无效。

3、下面贴上部分测试代码,大家帮忙看看:
{

SXSSFWorkbook workbook = new SXSSFWorkbook();

SXSSFSheet sheet = workbook.createSheet("format");

SXSSFRow row = sheet.createRow(1);

SXSSFCell cell = row.createCell(1);

cell.setCellValue("A =");

cell = row.createCell(2);

cell.setCellValue(20.1376);

HSSFDataFormat df = new HSSFWorkbook().createDataFormat();

CellStyle cellStyle = workbook.createCellStyle();

cellStyle.setDataFormat(df.getBuiltinFormat("0.00"));

//cellStyle.setDataFormat(workbook.createDataFormat().getFormat("0.0
0"));

cell.setCellStyle(cellStyle);

FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));

workbook.write(out);

out.close();

System.out.println("format.xlsx written successfully");

}

导出的excel截图如下:

图片说明

希望能有大佬能帮忙解惑一下,欢迎大家一起来讨论讨论。

查看全部
qq_38950341
傻Lin
2019/11/04 16:01
  • java
  • 点赞
  • 收藏
  • 回答
    私信

1个回复