傻Lin 2019-11-04 16:01 采纳率: 0%
浏览 6110

使用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截图如下:

图片说明

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

  • 写回答

3条回答 默认 最新

  • wode天啊 2021-02-23 17:06
    关注
    HSSFCellStyle cellStyle = workbook.createCellStyle();
    // 数值类型
    cellStyle.setDataFormat(dataFormat.getFormat("0.00_ "));
    cellStyle.setFont(font);
    评论

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题