若依框架导出保留小数0
时间: 2024-11-24 09:20:41 浏览: 78
若依(Ruoyi)是一个基于Spring Boot的开源后台管理系统框架,其在数据导出功能上,默认可能会将数字字段处理为整数形式。如果你想在导出的数据中保留小数点后的位数,可以自定义Excel导出策略。
首先,在`Ruoyi ExcelService`或者自定义的ExcelExport类中,你需要覆盖`writeData`方法,然后在写入单元格数据时指定NumberFormat设置小数位数。例如:
```java
public void writeData(OutputStream outputStream, List<?> data) throws IOException {
// 获取工作簿对象
Workbook workbook = createWorkbook();
Sheet sheet = workbook.getSheetAt(0);
// 遍历数据并写入单元格
for (int i = 0; i < data.size(); i++) {
Row row = sheet.createRow(i + 1);
Map<String, Object> rowData = data.get(i);
for (Map.Entry<String, Object> entry : rowData.entrySet()) {
Cell cell = row.createCell(entry.getKey().hashCode());
String value = entry.getValue().toString();
// 如果值是数字,设置小数位数
if (isNumeric(value)) {
double num = Double.parseDouble(value);
NumberFormat format = new DecimalFormat("#.##");
cell.setCellValue(format.format(num));
} else {
cell.setCellValue(value);
}
}
}
// 写入到文件并关闭
try (FileOutputStream fileOut = new FileOutputStream(outputStream)) {
workbook.write(fileOut);
}
}
private boolean isNumeric(String str) {
try {
Double.parseDouble(str);
return true;
} catch (NumberFormatException e) {
return false;
}
}
```
在这个例子中,`DecimalFormat`用于格式化数值,并通过`.format()`方法设置保留的小数位数。记得在项目启动时配置该服务,让它生效于所有的导出操作。
阅读全文