| | |
| | | try { |
| | | run.setText(changeValue(run.toString(), textMap, run, paragraph, document, runPosition), 0); |
| | | } catch (Exception e) { |
| | | |
| | | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | |
| | | } else { |
| | | String keyTemp = textSet.getKey(); |
| | | String keyValue = Objects.isNull(textSet.getValue()) ? "" : textSet.getValue().toString(); |
| | | if (StringUtils.contains(keyValue, "%line-feed%")) { |
| | | if (StringUtils.contains(keyValue, "%line-feed%") || StringUtils.contains(keyValue, "%table-line-feed%")) { |
| | | |
| | | //表格里的换行 特殊处理 因为没有段落 |
| | | if(StringUtils.contains(keyValue, "table")){ |
| | | String[] keyValues = keyValue.split("%table-line-feed%"); |
| | | runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document,1); |
| | | }else{ |
| | | String[] keyValues = keyValue.split("%line-feed%"); |
| | | runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document); |
| | | runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document,0); |
| | | } |
| | | } |
| | | log.info("ChangeValue的key值:" + key + " ChangeValue的value值:" + keyValue); |
| | | runValue = runValue.replaceAll(key, keyValue); |
| | |
| | | |
| | | ctpPr.addNewSectPr(); |
| | | } |
| | | private static String delDynList(String placeholder, List obj, XWPFParagraph oldParagraph, XWPFDocument templateDoc) { |
| | | |
| | | private static String delDynList(String placeholder, List obj, XWPFParagraph oldParagraph, XWPFDocument templateDoc,Integer flag) { |
| | | String placeholderValue = placeholder; |
| | | List dataList = obj; |
| | | //普通换行降序处理 表格换行无需降序 |
| | | if(flag == 0){ |
| | | Collections.reverse(dataList); |
| | | } |
| | | XWPFRun oldRun = oldParagraph.getRuns().size() > 0 ? oldParagraph.getRuns().get(0) : null; |
| | | Boolean isBold = Objects.nonNull(oldRun) ? oldRun.isBold() : false; |
| | | for (int i = 0, size = dataList.size(); i < size; i++) { |
| | |
| | | if (i == 0) { |
| | | placeholderValue = String.valueOf(text); |
| | | } else { |
| | | XWPFParagraph paragraph = createParagraph(oldParagraph, templateDoc, oldRun, isBold, String.valueOf(text)); |
| | | XWPFParagraph paragraph = null; |
| | | if(flag == 0){ |
| | | paragraph = createParagraph(oldParagraph, templateDoc, oldRun, isBold, String.valueOf(text)); |
| | | }else if(flag == 1){ |
| | | paragraph = createTableRun(oldParagraph, oldRun, isBold, String.valueOf(text)); |
| | | } |
| | | |
| | | if (paragraph != null) { |
| | | oldParagraph = paragraph; |
| | | } |
| | |
| | | return newPar; |
| | | } |
| | | |
| | | ; |
| | | /** |
| | | * 创建table表格换行 段落run |
| | | * @param oldParagraph |
| | | * @param oldRun |
| | | * @param isBold |
| | | * @param texts |
| | | * @return |
| | | */ |
| | | public static XWPFParagraph createTableRun(XWPFParagraph oldParagraph,XWPFRun oldRun, boolean isBold, String... texts) { |
| | | |
| | | XWPFRun run = oldParagraph.createRun(); |
| | | run.addBreak(); |
| | | run.setText(texts[0]); |
| | | run.setFontFamily(oldRun.getFontFamily()); |
| | | int fontSize = oldRun.getFontSize(); |
| | | run.setFontSize((fontSize == -1) ? DEFAULT_FONT_SIZE : fontSize); |
| | | run.setBold(isBold); |
| | | run.setItalic(oldRun.isItalic()); |
| | | run.setColor(oldRun.getColor()); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | private static void copyParagraph(XWPFParagraph sourcePar, XWPFParagraph targetPar, XWPFRun oldRun, boolean isBold, String... texts) { |
| | | targetPar.setAlignment(sourcePar.getAlignment()); |
| | | targetPar.setVerticalAlignment(sourcePar.getVerticalAlignment()); |