src/main/java/com/ruoyi/common/utils/poi/ExcelHandlerAdapter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/common/utils/poi/ExcelHandlerAdapter.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.common.utils.poi; /** * Excelæ°æ®æ ¼å¼å¤çéé å¨ * * @author ruoyi */ public interface ExcelHandlerAdapter { /** * æ ¼å¼å * * @param value åå æ ¼æ°æ®å¼ * @param args excel注解argsåæ°ç» * * @return å¤çåçå¼ */ Object format(Object value, String[] args); } src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -6,6 +6,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.ArrayList; @@ -332,6 +333,10 @@ else if (StringUtils.isNotEmpty(attr.dictType())) { val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator()); } else if (!attr.handler().equals(ExcelHandlerAdapter.class)) { val = dataFormatHandlerAdapter(val, attr); } else if (ColumnType.IMAGE == attr.cellType() && StringUtils.isNotEmpty(pictures)) { @@ -729,6 +734,10 @@ { cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString()); } else if (!attr.handler().equals(ExcelHandlerAdapter.class)) { cell.setCellValue(dataFormatHandlerAdapter(value, attr)); } else { // 设置åç±»å @@ -902,6 +911,28 @@ } /** * æ°æ®å¤çå¨ * * @param value æ°æ®å¼ * @param excel æ°æ®æ³¨è§£ * @return */ public String dataFormatHandlerAdapter(Object value, Excel excel) { try { Object instance = excel.handler().newInstance(); Method formatMethod = excel.handler().getMethod("format", new Class[] { Object.class, String[].class }); value = formatMethod.invoke(instance, value, excel.args()); } catch (Exception e) { log.error("ä¸è½æ ¼å¼åæ°æ® " + excel.handler(), e.getMessage()); } return Convert.toStr(value); } /** * å计ç»è®¡ä¿¡æ¯ */ private void addStatisticsData(Integer index, String text, Excel entity) src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
@@ -5,6 +5,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.math.BigDecimal; import com.ruoyi.common.utils.poi.ExcelHandlerAdapter; /** * èªå®ä¹å¯¼åºExcelæ°æ®æ³¨è§£ @@ -108,7 +109,17 @@ /** * 导åºåæ®µå¯¹é½æ¹å¼ï¼0ï¼é»è®¤ï¼1ï¼é å·¦ï¼2ï¼å± ä¸ï¼3ï¼é å³ï¼ */ Align align() default Align.AUTO; public Align align() default Align.AUTO; /** * èªå®ä¹æ°æ®å¤çå¨ */ public Class<?> handler() default ExcelHandlerAdapter.class; /** * èªå®ä¹æ°æ®å¤çå¨åæ° */ public String[] args() default {}; public enum Align {