poi导出excel时设置单元格为数字类型(解决:导出Excel时为文本类型选中一整列不能求和问题)

JAVA基础 专栏收录该内容
52 篇文章 0 订阅

出现问题 :导出Excel时为文本类型选中一整列不能求和,单元格左上角出现绿三角

如下图:


查了一下好多是通过设置单元格数据类型方式解决

如导出类型设置为整数或小数格式:

//引入导出Excel路径
File fi = new File(request.getSession().getServletContext().getRealPath("/") + "WEB-INF/jsp/purchasing/orderExcel/Excel.xls");
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));
//读取excel模板
HSSFWorkbook wb = new HSSFWorkbook(fs);
//读取了模板内所有sheet内容
HSSFSheet sheet = wb.getSheetAt(0);
//如果这行没有了,整个公式都不会有自动计算的效果的
sheet.setForceFormulaRecalculation(true);
// 循环将excel中的数据存入库
for (int i = 1; i < lists.size(); i++) {
    List<Object> list = lists.get(i);
    HSSFRow dataRow = sheet.createRow((int) i + 1);  
    CellStyle cellStyle = wb.createCellStyle();
    //设置为整数
    dataRow.createCell(0).setCellValue(util.getFormat(String.valueOf(list.get(0))));
    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
    dataRow.createCell(0).setCellStyle(cellStyle);
    //设置为小数
    dataRow.createCell(1).setCellValue(util.getFormat(String.valueOf(list.get(1))));
    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
    dataRow.createCell(1).setCellStyle(cellStyle);
}

我用了但是没效果。

//double转int整数类型
 dataRow.createCell(32).setCellValue((int)Double.parseDouble(list.get(9).toString()));//数量
//trim()去掉收尾空格防止报For input string: "8.39 "这样错误。
 dataRow.createCell(36).setCellValue(Double.parseDouble((list.get(10).toString()).trim()));//含税单价

这样就好用了。

解决For input string: "8.39 "报错

记录下:对象object转换成new BigDecimal

dataRow.createCell(36).setCellValue(new BigDecimal(list.get(10).toString().trim()).doubleValue());

  • 2
    点赞
  • 4
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值