From 4626f44d19eefda19cfe2e82c780dc8d07d166e7 Mon Sep 17 00:00:00 2001 From: jueyue Date: Tue, 19 Sep 2017 11:53:01 +0800 Subject: [PATCH] =?UTF-8?q?word=E6=A0=B7=E5=BC=8F=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../easypoi/util/PoiWordStyleUtil.java | 181 ++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiWordStyleUtil.java diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiWordStyleUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiWordStyleUtil.java new file mode 100644 index 0000000..4fa734d --- /dev/null +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiWordStyleUtil.java @@ -0,0 +1,181 @@ +package cn.afterturn.easypoi.util; + +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; + +/** + * Word 样式copy Created by JueYue on 2017/9/19. + */ +public class PoiWordStyleUtil { + + + public static void copyCellAndSetValue(XWPFTableCell tmpCell, XWPFTableCell cell, String text) throws Exception { + CTTc cttc2 = tmpCell.getCTTc(); + CTTcPr ctPr2 = cttc2.getTcPr(); + + CTTc cttc = cell.getCTTc(); + CTTcPr ctPr = cttc.addNewTcPr(); + if (tmpCell.getColor() != null) { + cell.setColor(tmpCell.getColor()); + } + if (tmpCell.getVerticalAlignment() != null) { + cell.setVerticalAlignment(tmpCell.getVerticalAlignment()); + } + if (ctPr2.getTcW() != null) { + ctPr.addNewTcW().setW(ctPr2.getTcW().getW()); + } + if (ctPr2.getVAlign() != null) { + ctPr.addNewVAlign().setVal(ctPr2.getVAlign().getVal()); + } + if (cttc2.getPList().size() > 0) { + CTP ctp = cttc2.getPList().get(0); + if (ctp.getPPr() != null) { + if (ctp.getPPr().getJc() != null) { + cttc.getPList().get(0).addNewPPr().addNewJc().setVal(ctp.getPPr().getJc().getVal()); + } + } + } + + if (ctPr2.getTcBorders() != null) { + ctPr.setTcBorders(ctPr2.getTcBorders()); + } + + XWPFParagraph tmpP = tmpCell.getParagraphs().get(0); + XWPFParagraph cellP = cell.getParagraphs().get(0); + XWPFRun tmpR = null; + if (tmpP.getRuns() != null && tmpP.getRuns().size() > 0) { + tmpR = tmpP.getRuns().get(0); + } + XWPFRun cellR = cellP.createRun(); + cellR.setText(text); + //复制字体信息 + if (tmpR != null) { + cellR.setBold(tmpR.isBold()); + cellR.setItalic(tmpR.isItalic()); + cellR.setStrike(tmpR.isStrike()); + cellR.setUnderline(tmpR.getUnderline()); + cellR.setColor(tmpR.getColor()); + cellR.setTextPosition(tmpR.getTextPosition()); + if (tmpR.getFontSize() != -1) { + cellR.setFontSize(tmpR.getFontSize()); + } + if (tmpR.getFontFamily() != null) { + cellR.setFontFamily(tmpR.getFontFamily()); + } + if (tmpR.getCTR() != null) { + if (tmpR.getCTR().isSetRPr()) { + CTRPr tmpRPr = tmpR.getCTR().getRPr(); + if (tmpRPr.isSetRFonts()) { + CTFonts tmpFonts = tmpRPr.getRFonts(); + CTRPr cellRPr = cellR.getCTR().isSetRPr() ? cellR.getCTR().getRPr() : cellR.getCTR().addNewRPr(); + CTFonts cellFonts = cellRPr.isSetRFonts() ? cellRPr.getRFonts() : cellRPr.addNewRFonts(); + cellFonts.setAscii(tmpFonts.getAscii()); + cellFonts.setAsciiTheme(tmpFonts.getAsciiTheme()); + cellFonts.setCs(tmpFonts.getCs()); + cellFonts.setCstheme(tmpFonts.getCstheme()); + cellFonts.setEastAsia(tmpFonts.getEastAsia()); + cellFonts.setEastAsiaTheme(tmpFonts.getEastAsiaTheme()); + cellFonts.setHAnsi(tmpFonts.getHAnsi()); + cellFonts.setHAnsiTheme(tmpFonts.getHAnsiTheme()); + } + } + } + } + //复制段落信息 + if (tmpP.getAlignment() != null) { + cellP.setAlignment(tmpP.getAlignment()); + } + if (tmpP.getVerticalAlignment() != null) { + cellP.setVerticalAlignment(tmpP.getVerticalAlignment()); + } + if (tmpP.getBorderBetween() != null) { + cellP.setBorderBetween(tmpP.getBorderBetween()); + } + if (tmpP.getBorderBottom() != null){ + cellP.setBorderBottom(tmpP.getBorderBottom()); + } + if (tmpP.getBorderLeft() != null){ + cellP.setBorderLeft(tmpP.getBorderLeft()); + } + if (tmpP.getBorderRight() != null){ + cellP.setBorderRight(tmpP.getBorderRight()); + } + if (tmpP.getBorderTop() != null){ + cellP.setBorderTop(tmpP.getBorderTop()); + } + cellP.setPageBreak(tmpP.isPageBreak()); + if (tmpP.getCTP() != null) { + if (tmpP.getCTP().getPPr() != null) { + CTPPr tmpPPr = tmpP.getCTP().getPPr(); + CTPPr cellPPr = cellP.getCTP().getPPr() != null ? cellP.getCTP().getPPr() : cellP.getCTP().addNewPPr(); + //复制段落间距信息 + CTSpacing tmpSpacing = tmpPPr.getSpacing(); + if (tmpSpacing != null) { + CTSpacing cellSpacing = cellPPr.getSpacing() != null ? cellPPr.getSpacing() : cellPPr.addNewSpacing(); + if (tmpSpacing.getAfter() != null) { + cellSpacing.setAfter(tmpSpacing.getAfter()); + } + if (tmpSpacing.getAfterAutospacing() != null) { + cellSpacing.setAfterAutospacing(tmpSpacing.getAfterAutospacing()); + } + if (tmpSpacing.getAfterLines() != null) { + cellSpacing.setAfterLines(tmpSpacing.getAfterLines()); + } + if (tmpSpacing.getBefore() != null) { + cellSpacing.setBefore(tmpSpacing.getBefore()); + } + if (tmpSpacing.getBeforeAutospacing() != null) { + cellSpacing.setBeforeAutospacing(tmpSpacing.getBeforeAutospacing()); + } + if (tmpSpacing.getBeforeLines() != null) { + cellSpacing.setBeforeLines(tmpSpacing.getBeforeLines()); + } + if (tmpSpacing.getLine() != null) { + cellSpacing.setLine(tmpSpacing.getLine()); + } + if (tmpSpacing.getLineRule() != null) { + cellSpacing.setLineRule(tmpSpacing.getLineRule()); + } + } + //复制段落缩进信息 + CTInd tmpInd = tmpPPr.getInd(); + if (tmpInd != null) { + CTInd cellInd = cellPPr.getInd() != null ? cellPPr.getInd() : cellPPr.addNewInd(); + if (tmpInd.getFirstLine() != null) { + cellInd.setFirstLine(tmpInd.getFirstLine()); + } + if (tmpInd.getFirstLineChars() != null) { + cellInd.setFirstLineChars(tmpInd.getFirstLineChars()); + } + if (tmpInd.getHanging() != null) { + cellInd.setHanging(tmpInd.getHanging()); + } + if (tmpInd.getHangingChars() != null) { + cellInd.setHangingChars(tmpInd.getHangingChars()); + } + if (tmpInd.getLeft() != null) { + cellInd.setLeft(tmpInd.getLeft()); + } + if (tmpInd.getLeftChars() != null) { + cellInd.setLeftChars(tmpInd.getLeftChars()); + } + if (tmpInd.getRight() != null) { + cellInd.setRight(tmpInd.getRight()); + } + if (tmpInd.getRightChars() != null) { + cellInd.setRightChars(tmpInd.getRightChars()); + } + } + } + } + } +}