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

出现问题 :导出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());

猜你喜欢

转载自blog.csdn.net/qq_36135335/article/details/80923270
今日推荐