本文主要是介绍poi 导出excel(BigDecimal数据类型)左上角有绿色小三角解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在做poi导出excel肯定会有这么一段代码如下:
public Cell addCell(Row row, int column, Object val, int align, Class<?> fieldType){Cell cell = row.createCell(column);CellStyle style1 = styles.get("data"+(align>=1&&align<=3?align:""));CellStyle style = wb.createCellStyle();style.cloneStyleFrom(style1);try {if (val == null){cell.setCellValue("");} else if (val instanceof String) {cell.setCellValue((String) val);} else if (val instanceof Integer) {cell.setCellValue((Integer) val);} else if (val instanceof Long) {cell.setCellValue((Long) val);} else if (val instanceof Double) {cell.setCellValue((Double) val);} else if (val instanceof Float) {cell.setCellValue((Float) val);} else if (val instanceof Date) {DataFormat format = wb.createDataFormat();style.setDataFormat(format.getFormat("yyyy/MM/dd"));cell.setCellValue((Date) val);} else if (val instanceof BigDecimal) {double doubleVal = ((BigDecimal) val).doubleValue();DataFormat format = wb.createDataFormat();style.setDataFormat(format.getFormat("¥#,##0.00"));cell.setCellValue(doubleVal);}else {if (fieldType != Class.class){cell.setCellValue((String)fieldType.getMethod("setValue", Object.class).invoke(null, val));}else{cell.setCellValue((String)Class.forName(this.getClass().getName().replaceAll(this.getClass().getSimpleName(), "fieldtype."+val.getClass().getSimpleName()+"Type")).getMethod("setValue", Object.class).invoke(null, val));}}} catch (Exception ex) {log.info("Set cell value ["+row.getRowNum()+","+column+"] error: " + ex.toString());cell.setCellValue(val.toString());}cell.setCellStyle(style);return cell;}
注意其中BigDecimal数据类型的转换方法
else if (val instanceof BigDecimal) {/** 最初的val是没有类型的需要强转,既然强转为什么不直接转成Double类型,而是这样转成BigDecimal类型,* 再用doubleValue方法转呢,完全可以这样做double doubleVal = (Double)val;在编译的时候不会报错,* 运行时候会抱异常 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double* 经实践还是用下面的代码才可以导出的数据上面没有小三角。*/double doubleVal = ((BigDecimal) val).doubleValue();DataFormat format = wb.createDataFormat();//此格式是货币格式style.setDataFormat(format.getFormat("¥#,##0.00"));//最终必须接收一个double类型的数据cell.setCellValue(doubleVal);
这篇关于poi 导出excel(BigDecimal数据类型)左上角有绿色小三角解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!