| @@ -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()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||