解决poi导出EXCEL报表之后,金额不能自动求和的问题

前两天项目上突然被提了一个BUG,之前的Excel导出功能,金额不能汇总,格式不对。后来翻阅资料以及比对程序发现,这个POI在生成Excel的时候,程序里面,数值对了,也不尽完美,还需要再cell的style上面动下手脚,哈哈,如下。

HSSFCellStyle style = wb.createCellStyle();
createCellForMoney(row,col,HSSFCell.CELL_TYPE_NUMERIC,style,yourMoneyValue);//金额
public void createCellForMoney(HSSFRow row,int columnIndex,int cellType,HSSFCellStyle style,def value){
        HSSFCell cell = row.createCell(columnIndex)
        style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00")); // 两位小数,只加了一个格式的自定义,反应到Excle上面为自定义的金额,其他格式类似
        cell.setCellStyle(style)
        cell.setCellType(cellType)
        cell.setCellValue(value)
    }
而且这个同样解决了数值过大转换为科学计数法的问题。哈哈,一石二鸟。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您好!关于您的问题,可以通过POI导出Excel时设置单元格公式来实现自动求和。具体实现方法如下: 1. 在写入Excel时,设置需要求和的单元格格式为数值格式。 2. 在需要求和的单元格后面插入一个新的单元格,用来存放公式。 3. 在公式单元格中设置SUM函数,例如SUM(C2:C10),表示求C2到C10单元格的和。 4. 最后,在写入Excel完成后,调用workbook对象的recalculateFormulas()方法,会自动计算公式单元格的值。 下面是一个简单的Java代码示例: ``` // 创建Workbook对象 Workbook workbook = new HSSFWorkbook(); // 创建Sheet对象 Sheet sheet = workbook.createSheet("Sheet1"); // 创建第一行 Row row1 = sheet.createRow(0); // 创建单元格格式 CellStyle cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(workbook.createDataFormat().getFormat("#,##0.00")); // 写入数值单元格 Cell cell1 = row1.createCell(0); cell1.setCellValue(1000); cell1.setCellStyle(cellStyle); // 写入数值单元格 Cell cell2 = row1.createCell(1); cell2.setCellValue(2000); cell2.setCellStyle(cellStyle); // 写入数值单元格 Cell cell3 = row1.createCell(2); cell3.setCellValue(3000); cell3.setCellStyle(cellStyle); // 插入公式单元格 Cell cell4 = row1.createCell(3); cell4.setCellFormula("SUM(A1:C1)"); // 计算公式 workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); // 导出Excel文件 FileOutputStream outputStream = new FileOutputStream("test.xls"); workbook.write(outputStream); outputStream.close(); ``` 希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值