[测评系统]--测评系统核心代码库
zhijie
2021-07-10 fba68d129dd022883186d6182811a6ef92568505
支持多角色,支持单列表格多个变量替换
1个文件已修改
18 ■■■■■ 已修改文件
src/main/java/com/ots/common/utils/poi/WordUtil.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ots/common/utils/poi/WordUtil.java
@@ -41,6 +41,8 @@
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordUtil {
    private static final Logger log = LoggerFactory.getLogger(WordUtil.class);
@@ -395,7 +397,7 @@
        }
    }
    private static void setTextValue(Map<String, Object> textMap, XWPFDocument document, XWPFParagraph paragraph, int runPosition, XWPFRun run) {
        System.out.println("表格的:" + run.toString());
        log.info("表格的:{}", run.toString());
        try {
            run.setText(changeValue(run.toString(), textMap, run, paragraph, document, runPosition), 0);
        } catch (Exception e) {
@@ -452,7 +454,11 @@
                if (runValue.indexOf("<BoldText>") != -1) {
                    return setOtherStyle(runValue, paragraph, runPosition, run);
                }
                //有些表格可能存在多个字典 需替换多次不能轻易break
                //没有可替换内容直接break
                if(getTextSize(runValue) == 0){
                break;
                }
            }
        }
        
@@ -1281,4 +1287,14 @@
            textMap.put("JAQTableStyle", jaqTableStyleList);
        }
    }
    public static int getTextSize(String runValue){
        Pattern pattern = Pattern.compile("%\\w+%");
        Matcher matcher = pattern.matcher(runValue);
        List<String> result = new ArrayList<>();
        while(matcher.find()){
            result.add(matcher.group());
        }
        return result.size();
    }
}