@Excel注解中原本的scale會四舍五入小數,導致進度丟失
想要的效果
- 顯示的時候保留兩個小數
- 真正的數值是保留之前的數值
還原過程
若以中有一個專門的工具類,用來處理excel的
- 找到EXCEL導出方法exportExcel()
- 找到writeSheet,寫表格的方法
- 找到填充數據的方法fillExcelData
- 找到添加單元格的方法addCell
- 找到設置 單元格VO的方法
setCellVo
對于NUMBERIC類型的,但是設置format的屬性值
/*** 設置單元格信息** @param value 單元格值* @param attr 注解相關* @param cell 單元格信息*/public void setCellVo(Object value, Excel attr, Cell cell) {if (ColumnType.STRING == attr.cellType()) {String cellValue = Convert.toStr(value);// 對于任何以表達式觸發字符 =-+@開頭的單元格,直接使用tab字符作為前綴,防止CSV注入。if (StringUtils.startsWithAny(cellValue, FORMULA_STR)) {cellValue = RegExUtils.replaceFirst(cellValue, FORMULA_REGEX_STR, "\t$0");}if (value instanceof Collection && StringUtils.equals("[]", cellValue)) {cellValue = StringUtils.EMPTY;}cell.setCellValue(StringUtils.isNull(cellValue) ? attr.defaultValue() : cellValue + attr.suffix());} else if (ColumnType.NUMERIC == attr.cellType()) {if (StringUtils.isNotNull(value)) {if (StringUtils.isNotEmpty(attr.numberFormat())) {CellStyle numberCellStyle = cell.getCellStyle();DataFormat dataFormat = this.wb.createDataFormat();numberCellStyle.setDataFormat(dataFormat.getFormat(attr.numberFormat()));cell.setCellStyle(numberCellStyle);}cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));}} else if (ColumnType.IMAGE == attr.cellType()) {ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1), cell.getRow().getRowNum() + 1);String imagePath = Convert.toStr(value);if (StringUtils.isNotEmpty(imagePath)) {byte[] data = ImageUtils.getImage(imagePath);getDrawingPatriarch(cell.getSheet()).createPicture(anchor,cell.getSheet().getWorkbook().addPicture(data, getImageType(data)));}}}
別忘了在注解@Excel中加上我們的自定義注解
/*** 數字類型格式*/public String numberFormat() default "";
使用
在對應的@Excel注解中,新增一個屬性numberFormat
/*** 總重*/@Excel(name = "總重", cellType = Excel.ColumnType.NUMERIC, align = HorizontalAlignment.RIGHT,numberFormat = "#,##0.00")private BigDecimal totalWeight;