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