乐山建网站局部改造家装公司
乐山建网站,局部改造家装公司,潭州学院网站建设报名,海拉尔网页设计正确做法应该将 BigDecimal 转换为 POI 单元格支持的合适类型#xff0c;例如 double 或 String。方案一#xff1a;转换为 double#xff08;推荐#xff0c;适合数值计算#xff09;javaif (capitalInfoVO.getCapitalTotal() ! null) {row.createCell(4).setCellValue(c…正确做法应该将BigDecimal转换为 POI 单元格支持的合适类型例如double或String。方案一转换为 double推荐适合数值计算javaif (capitalInfoVO.getCapitalTotal() ! null) { row.createCell(4).setCellValue(capitalInfoVO.getCapitalTotal().doubleValue()); }注意double可能丢失精度特别是大数值或高精度小数但通常金额类数据使用double足够。若需保留原样可使用方案二。方案二转换为字符串保留原格式javaif (capitalInfoVO.getCapitalTotal() ! null) { row.createCell(4).setCellValue(capitalInfoVO.getCapitalTotal().toString()); }此时 Excel 单元格会以文本形式存储可能影响后续计算。方案三设置数字格式最佳实践如果需要精确数值并保留格式可以创建带有数字格式的CellStylejava// 创建数字格式样式 CellStyle numberStyle workbook.createCellStyle(); numberStyle.setDataFormat(workbook.createDataFormat().getFormat(#,##0.00)); // 根据需求调整 if (capitalInfoVO.getCapitalTotal() ! null) { Cell cell row.createCell(4); cell.setCellValue(capitalInfoVO.getCapitalTotal().doubleValue()); cell.setCellStyle(numberStyle); }修正后的完整片段java// 浮点数类型BigDecimal类型 if (capitalInfoVO.getCapitalTotal() ! null) { row.createCell(4).setCellValue(capitalInfoVO.getCapitalTotal().doubleValue()); } if (capitalInfoVO.getCapitalLeaveTotal() ! null) { row.createCell(5).setCellValue(capitalInfoVO.getCapitalLeaveTotal().doubleValue()); } if (capitalInfoVO.getCapitalValidTotal() ! null) { row.createCell(6).setCellValue(capitalInfoVO.getCapitalValidTotal().doubleValue()); }或者如果希望保留精确字符串表示javarow.createCell(4).setCellValue(capitalInfoVO.getCapitalTotal().toString());完整示例代码/** * 导出数据文件 */ public String exportFile(CapitalInfoQueryDTO queryDTO) { // 获取资金信息列表 ListCapitalInfoVO capitalInfoVOs queryList(queryDTO); try { // 1、创建工作薄excel文件.xlsx文件 XSSFWorkbook workbook new XSSFWorkbook(); // 2、创建工作表 XSSFSheet sheet workbook.createSheet(资金信息); // 3、创建工作表表头 XSSFRow headerRow sheet.createRow(0); headerRow.createCell(0).setCellValue(创建时间); headerRow.createCell(1).setCellValue(资金序号); headerRow.createCell(2).setCellValue(资金名称); headerRow.createCell(3).setCellValue(资金类别); headerRow.createCell(4).setCellValue(指标预算总额); headerRow.createCell(5).setCellValue(指标剩余额); headerRow.createCell(6).setCellValue(指标可用总额); headerRow.createCell(7).setCellValue(指标类别); headerRow.createCell(8).setCellValue(资金账户); headerRow.createCell(9).setCellValue(资金来源); headerRow.createCell(10).setCellValue(指标来源); headerRow.createCell(11).setCellValue(资金年份); headerRow.createCell(12).setCellValue(状态); headerRow.createCell(13).setCellValue(备注信息); // 创建日期格式样式 CellStyle dateCellStyle workbook.createCellStyle(); CreationHelper createHelper workbook.getCreationHelper(); dateCellStyle.setDataFormat(createHelper.createDataFormat().getFormat(yyyy-MM-dd HH:mm:ss)); // 创建数字格式样式 CellStyle numberCellStyle workbook.createCellStyle(); numberCellStyle.setDataFormat(workbook.createDataFormat().getFormat(#,##0.00)); // 4、填充数据 int rowIndex 1; for (CapitalInfoVO capitalInfoVO : capitalInfoVOs) { Row row sheet.createRow(rowIndex); // 日期类型创建时间 if (capitalInfoVO.getCreateTime() ! null) { Cell cell row.createCell(0); cell.setCellValue(capitalInfoVO.getCreateTime()); // 设置日期样式 cell.setCellStyle(dateCellStyle); } // 字符串类型 row.createCell(1).setCellValue(capitalInfoVO.getCapitalNo()); row.createCell(2).setCellValue(capitalInfoVO.getCapitalName()); row.createCell(3).setCellValue(capitalInfoVO.getCapitalType()); row.createCell(7).setCellValue(capitalInfoVO.getCapitalIndexType()); row.createCell(8).setCellValue(capitalInfoVO.getCapitalAccount()); row.createCell(9).setCellValue(capitalInfoVO.getCapitalSource()); row.createCell(10).setCellValue(capitalInfoVO.getCapitalIndexSource()); row.createCell(13).setCellValue(capitalInfoVO.getRemark()); // 浮点数类型BigDecimal类型其值为null时抛出异常的问题 if (capitalInfoVO.getCapitalTotal() ! null) { // 方案一转换为 double推荐适合数值计算 row.createCell(4).setCellValue(capitalInfoVO.getCapitalTotal().doubleValue()); } if (capitalInfoVO.getCapitalLeaveTotal() ! null) { // 方案二转换为字符串保留原格式 row.createCell(5).setCellValue(capitalInfoVO.getCapitalLeaveTotal().toString()); } if (capitalInfoVO.getCapitalValidTotal() ! null) { // 方案三设置数字格式最佳实践 Cell cell row.createCell(6); cell.setCellValue(capitalInfoVO.getCapitalTotal().doubleValue()); // 设置数字样式 cell.setCellStyle(numberCellStyle); } // 整数类型Integer类型其值为null时抛出异常的问题 if (capitalInfoVO.getCapitalYear() ! null) { row.createCell(11).setCellValue(capitalInfoVO.getCapitalYear()); } if (capitalInfoVO.getCapitalState() ! null) { String value switch (capitalInfoVO.getCapitalState()) { case 0 - CapitalInfoStateEnum.IN_USE.getDescription(); case 1 - CapitalInfoStateEnum.RETURNED.getDescription(); case 2 - CapitalInfoStateEnum.CLOSED.getDescription(); default - ; }; row.createCell(12).setCellValue(value); } } // 5、生成excel文件 // 使用当前时间戳使文件名唯一 String timestamp String.valueOf(System.currentTimeMillis()); String filename 资金信息- timestamp .xlsx; String filePath fileSaveUtils.getAppDirectory() filename; FileOutputStream fileOut new FileOutputStream(filePath); workbook.write(fileOut); // 关闭文件输出流释放资源 fileOut.close(); // 关闭workbook对象释放资源 workbook.close(); // 返回文件绝对路径 return filePath; } catch (IOException e) { throw new RuntimeException(e); } }导出Excel效果