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截图如下:
希望能有大佬能帮忙解惑一下,欢迎大家一起来讨论讨论。