poi操作word 2007 常用方法总结

更新时间:2024-06-17 15:39:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

poi操作word 2007 常用方法总结

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.math.BigInteger;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.apache.commons.lang3.StringUtils;

import org.apache.poi.POIXMLDocument;

import org.apache.poi.openxml4j.opc.OPCPackage;

import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;

import org.apache.poi.xwpf.usermodel.BodyElementType;

import org.apache.poi.xwpf.usermodel.Borders;

import org.apache.poi.xwpf.usermodel.BreakType;

import org.apache.poi.xwpf.usermodel.Document;

import org.apache.poi.xwpf.usermodel.IBodyElement;

import org.apache.poi.xwpf.usermodel.ParagraphAlignment;

import org.apache.poi.xwpf.usermodel.TextAlignment;

import org.apache.poi.xwpf.usermodel.VerticalAlign;

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import org.apache.poi.xwpf.usermodel.XWPFRelation;

import org.apache.poi.xwpf.usermodel.XWPFRun;

import org.apache.poi.xwpf.usermodel.XWPFTable;

import org.apache.poi.xwpf.usermodel.XWPFTableCell;

import org.apache.poi.xwpf.usermodel.XWPFTableRow;

import org.apache.xmlbeans.XmlException;

import org.apache.xmlbeans.XmlToken;

import org.apache.xmlbeans.impl.xb.xmlschema.SpaceAttribute;

import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;

import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;

import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBackground;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColor;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTEm;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFldChar;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHighlight;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHpsMeasure;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTMarkupRange;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageBorders;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageSz;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTParaRPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSignedTwipsMeasure;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTextScale;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTUnderline;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STEm;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFldCharType;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHeightRule;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STPageOrientation;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;

public class POI_Word2007_工具类_S3_Test {

// 替换 复制 表格 段落

/*------------------------------------Word 插入书签--------------------------------------------------- */

/**

* @Description: 添加书签

*/

public void addParagraphContentBookmarkBasicStyle(XWPFParagraph p,

String content, BigInteger markId, String bookMarkName,

boolean isInsert, boolean isNewLine, String fontFamily,

String fontSize, String colorVal, boolean isBlod,

boolean isUnderLine, String underLineColor,

STUnderline.Enum underStyle, boolean isItalic, boolean isStrike) {

CTBookmark bookStart = p.getCTP().addNewBookmarkStart();

bookStart.setId(markId);

bookStart.setName(bookMarkName);

XWPFRun pRun = getOrAddParagraphFirstRun(p, isInsert, isNewLine);

setParagraphRunFontInfo(p, pRun, content, fontFamily, fontSize);

setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,

underLineColor, underStyle, isItalic, isStrike, false, false,

false, false, false, false, false, null, false, null, false,

null, null, null, 0, 0, 0);

CTMarkupRange bookEnd = p.getCTP().addNewBookmarkEnd();

bookEnd.setId(markId);

}

/**

* @Description: 添加书签

*/

public void addParagraphContentBookmark(XWPFParagraph p, String content,

BigInteger markId, String bookMarkName, boolean isInsert,

boolean isNewLine, String fontFamily, String fontSize,

String colorVal, boolean isBlod, boolean isUnderLine,

String underLineColor, STUnderline.Enum underStyle,

boolean isItalic, boolean isStrike, boolean isDStrike,

boolean isShadow, boolean isVanish, boolean isEmboss,

boolean isImprint, boolean isOutline, boolean isEm,

STEm.Enum emType, boolean isHightLight,

STHighlightColor.Enum hightStyle, boolean isShd,

STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign,

int position, int spacingValue, int indent) {

CTBookmark bookStart = p.getCTP().addNewBookmarkStart();

bookStart.setId(markId);

bookStart.setName(bookMarkName);

XWPFRun pRun = getOrAddParagraphFirstRun(p, isInsert, isNewLine);

setParagraphRunFontInfo(p, pRun, content, fontFamily, fontSize);

setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,

underLineColor, underStyle, isItalic, isStrike, isDStrike,

isShadow, isVanish, isEmboss, isImprint, isOutline, isEm,

emType, isHightLight, hightStyle, isShd, shdStyle, shdColor,

verticalAlign, position, spacingValue, indent);

CTMarkupRange bookEnd = p.getCTP().addNewBookmarkEnd();

bookEnd.setId(markId);

}

/*------------------------------------Word 插入超链接--------------------------------------------------- */

/**

* @Description: 默认的超链接样式

*/

public void addParagraphTextHyperlinkBasicStyle(XWPFParagraph paragraph,

String url, String text, String fontFamily, String fontSize,

String colorVal, boolean isBlod, boolean isItalic, boolean isStrike) {

addParagraphTextHyperlink(paragraph, url, text, fontFamily, fontSize,

colorVal, isBlod, true, \, STUnderline.SINGLE, isItalic,

isStrike, false, false, false, false, false, false, false,

null, false, null, false, null, null, null, 0, 0, 0);

}

/**

* @Description: 设置超链接样式

*/

public void addParagraphTextHyperlink(XWPFParagraph paragraph, String url,

String text, String fontFamily, String fontSize, String colorVal,

boolean isBlod, boolean isUnderLine, String underLineColor,

STUnderline.Enum underStyle, boolean isItalic, boolean isStrike,

boolean isDStrike, boolean isShadow, boolean isVanish,

boolean isEmboss, boolean isImprint, boolean isOutline,

boolean isEm, STEm.Enum emType, boolean isHightLight,

STHighlightColor.Enum hightStyle, boolean isShd,

STShd.Enum shdStyle, String shdColor,

STVerticalAlignRun.Enum verticalAlign, int position,

int spacingValue, int indent) {

// Add the link as External relationship

String id = paragraph

.getDocument()

.getPackagePart()

.addExternalRelationship(url,

XWPFRelation.HYPERLINK.getRelation()).getId();

// Append the link and bind it to the relationship

CTHyperlink cLink = paragraph.getCTP().addNewHyperlink();

cLink.setId(id);

// Create the linked text

CTText ctText = CTText.Factory.newInstance();

ctText.setStringValue(text);

CTR ctr = CTR.Factory.newInstance();

CTRPr rpr = ctr.addNewRPr();

if (StringUtils.isNotBlank(fontFamily)) {

// 设置字体

CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr

.addNewRFonts();

fonts.setAscii(fontFamily);

fonts.setEastAsia(fontFamily);

fonts.setHAnsi(fontFamily);

}

if (StringUtils.isNotBlank(fontSize)) {

// 设置字体大小

CTHpsMeasure sz = rpr.isSetSz() ? rpr.getSz() : rpr.addNewSz();

sz.setVal(new BigInteger(fontSize));

CTHpsMeasure szCs = rpr.isSetSzCs() ? rpr.getSzCs() : rpr

.addNewSzCs();

szCs.setVal(new BigInteger(fontSize));

}

// 设置超链接样式

// 字体颜色

if (StringUtils.isNotBlank(colorVal)) {

CTColor color = CTColor.Factory.newInstance();

color.setVal(colorVal);

rpr.setColor(color);

}

// 加粗

if (isBlod) {

CTOnOff bCtOnOff = rpr.addNewB();

bCtOnOff.setVal(STOnOff.TRUE);

}

// 下划线

if (isUnderLine) {

CTUnderline udLine = rpr.addNewU();

udLine.setVal(underStyle);

udLine.setColor(underLineColor);

}

// 倾斜

if (isItalic) {

CTOnOff iCtOnOff = rpr.addNewI();

iCtOnOff.setVal(STOnOff.TRUE);

}

// 删除线

if (isStrike) {

CTOnOff sCtOnOff = rpr.addNewStrike();

sCtOnOff.setVal(STOnOff.TRUE);

}

// 双删除线

if (isDStrike) {

CTOnOff dsCtOnOff = rpr.addNewDstrike();

dsCtOnOff.setVal(STOnOff.TRUE);

}

// 阴影

if (isShadow) {

CTOnOff shadowCtOnOff = rpr.addNewShadow();

shadowCtOnOff.setVal(STOnOff.TRUE);

}

// 隐藏

if (isVanish) {

CTOnOff vanishCtOnOff = rpr.addNewVanish();

vanishCtOnOff.setVal(STOnOff.TRUE);

}

// 阳文

if (isEmboss) {

CTOnOff embossCtOnOff = rpr.addNewEmboss();

embossCtOnOff.setVal(STOnOff.TRUE);

}

// 阴文

if (isImprint) {

CTOnOff isImprintCtOnOff = rpr.addNewImprint();

isImprintCtOnOff.setVal(STOnOff.TRUE);

}

// 空心

if (isOutline) {

CTOnOff isOutlineCtOnOff = rpr.addNewOutline();

isOutlineCtOnOff.setVal(STOnOff.TRUE);

}

// 着重号

if (isEm) {

CTEm em = rpr.addNewEm();

em.setVal(emType);

}

// 突出显示文本

if (isHightLight) {

if (hightStyle != null) {

CTHighlight hightLight = rpr.addNewHighlight();

hightLight.setVal(hightStyle);

}

}

if (isShd) {

// 设置底纹

CTShd shd = rpr.addNewShd();

if (shdStyle != null) {

shd.setVal(shdStyle);

}

if (shdColor != null) {

shd.setColor(shdColor);

}

}

// 上标下标

if (verticalAlign != null) {

rpr.addNewVertAlign().setVal(verticalAlign);

}

// 设置文本位置

rpr.addNewPosition().setVal(new BigInteger(String.valueOf(position)));

if (spacingValue != 0) {

// 设置字符间距信息

CTSignedTwipsMeasure ctSTwipsMeasure = rpr.addNewSpacing();

ctSTwipsMeasure

.setVal(new BigInteger(String.valueOf(spacingValue)));

}

// 设置字符间距缩进

if (indent > 0) {

CTTextScale paramCTTextScale = rpr.addNewW();

paramCTTextScale.setVal(indent);

}

ctr.setTArray(new CTText[] { ctText });

cLink.setRArray(new CTR[] { ctr });

}

/*------------------------------------Word 页眉页脚相关--------------------------------------------------- */

/**

* @Description: 页脚:显示页码信息

*/

public void simpleNumberFooter(XWPFDocument document) throws Exception {

CTP ctp = CTP.Factory.newInstance();

XWPFParagraph codePara = new XWPFParagraph(ctp, document);

XWPFRun r1 = codePara.createRun();

r1.setText(\第\);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

r1 = codePara.createRun();

CTFldChar fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.BEGIN);

r1 = codePara.createRun();

CTText ctText = r1.getCTR().addNewInstrText();

ctText.setStringValue(\);

ctText.setSpace(SpaceAttribute.Space.PRESERVE);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.END);

r1 = codePara.createRun();

r1.setText(\页 总共\);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

r1 = codePara.createRun();

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.BEGIN);

r1 = codePara.createRun();

ctText = r1.getCTR().addNewInstrText();

ctText.setStringValue(\);

ctText.setSpace(SpaceAttribute.Space.PRESERVE);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.END);

r1 = codePara.createRun();

r1.setText(\页\);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

setParagraphAlignInfo(codePara, ParagraphAlignment.CENTER,

TextAlignment.CENTER);

codePara.setBorderTop(Borders.THICK);

XWPFParagraph[] newparagraphs = new XWPFParagraph[1];

newparagraphs[0] = codePara;

CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();

XWPFHeaderFooterPolicy headerFooterPolicy = new XWPFHeaderFooterPolicy(

document, sectPr);

headerFooterPolicy.createFooter(STHdrFtr.DEFAULT, newparagraphs);

}

/**

* @Description: 页眉:显示时间信息

*/

public void simpleDateHeader(XWPFDocument document) throws Exception {

CTP ctp = CTP.Factory.newInstance();

XWPFParagraph codePara = new XWPFParagraph(ctp, document);

XWPFRun r1 = codePara.createRun();

CTFldChar fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.BEGIN);

r1 = codePara.createRun();

CTText ctText = r1.getCTR().addNewInstrText();

ctText.setStringValue(\);

ctText.setSpace(SpaceAttribute.Space.PRESERVE);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.END);

r1 = codePara.createRun();

r1.setText(\年\);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

r1 = codePara.createRun();

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.BEGIN);

r1 = codePara.createRun();

ctText = r1.getCTR().addNewInstrText();

ctText.setStringValue(\);

ctText.setSpace(SpaceAttribute.Space.PRESERVE);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.END);

r1 = codePara.createRun();

r1.setText(\月\);

r1.setFontSize(11);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

r1 = codePara.createRun();

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.BEGIN);

r1 = codePara.createRun();

ctText = r1.getCTR().addNewInstrText();

ctText.setStringValue(\);

ctText.setSpace(SpaceAttribute.Space.PRESERVE);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

fldChar = r1.getCTR().addNewFldChar();

fldChar.setFldCharType(STFldCharType.END);

r1 = codePara.createRun();

r1.setText(\日\);

r1.setFontSize(11);

setParagraphRunFontInfo(codePara, r1, null, \微软雅黑\, \);

setParagraphAlignInfo(codePara, ParagraphAlignment.CENTER,

TextAlignment.CENTER);

codePara.setBorderBottom(Borders.THICK);

XWPFParagraph[] newparagraphs = new XWPFParagraph[1];

newparagraphs[0] = codePara;

CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();

XWPFHeaderFooterPolicy headerFooterPolicy = new XWPFHeaderFooterPolicy(

document, sectPr);

headerFooterPolicy.createHeader(STHdrFtr.DEFAULT, newparagraphs);

}

/*------------------------------------Word 段落相关--------------------------------------------------- */

/**

* @Description: 得到段落CTPPr

*/

public CTPPr getParagraphCTPPr(XWPFParagraph p) {

CTPPr pPPr = null;

if (p.getCTP() != null) {

if (p.getCTP().getPPr() != null) {

pPPr = p.getCTP().getPPr();

} else {

pPPr = p.getCTP().addNewPPr();

}

}

return pPPr;

}

/**

* @Description: 得到XWPFRun的CTRPr

*/

public CTRPr getRunCTRPr(XWPFParagraph p, XWPFRun pRun) {

CTRPr pRpr = null;

if (pRun.getCTR() != null) {

pRpr = pRun.getCTR().getRPr();

if (pRpr == null) {

pRpr = pRun.getCTR().addNewRPr();

}

} else {

pRpr = p.getCTP().addNewR().addNewRPr();

}

return pRpr;

}

public XWPFRun getOrAddParagraphFirstRun(XWPFParagraph p, boolean isInsert,

boolean isNewLine) {

XWPFRun pRun = null;

if (isInsert) {

pRun = p.createRun();

} else {

if (p.getRuns() != null && p.getRuns().size() > 0) {

pRun = p.getRuns().get(0);

} else {

pRun = p.createRun();

}

}

if (isNewLine) {

pRun.addBreak();

}

return pRun;

}

public void setParagraphTextFontInfo(XWPFParagraph p, boolean isInsert,

boolean isNewLine, String content, String fontFamily,

String fontSize) {

XWPFRun pRun = getOrAddParagraphFirstRun(p, isInsert, isNewLine);

setParagraphRunFontInfo(p, pRun, content, fontFamily, fontSize);

}

/**

* @Description 设置字体信息

*/

public void setParagraphRunFontInfo(XWPFParagraph p, XWPFRun pRun,

String content, String fontFamily, String fontSize) {

CTRPr pRpr = getRunCTRPr(p, pRun);

if (StringUtils.isNotBlank(content)) {

pRun.setText(content);

}

// 设置字体

CTFonts fonts = pRpr.isSetRFonts() ? pRpr.getRFonts() : pRpr

.addNewRFonts();

fonts.setAscii(fontFamily);

fonts.setEastAsia(fontFamily);

fonts.setHAnsi(fontFamily);

// 设置字体大小

CTHpsMeasure sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();

sz.setVal(new BigInteger(fontSize));

CTHpsMeasure szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr

.addNewSzCs();

szCs.setVal(new BigInteger(fontSize));

}

/**

* @Description: 设置段落基本样式

*/

public void setParagraphTextBasicStyleInfo(XWPFParagraph p, XWPFRun pRun,

String colorVal, boolean isBlod, boolean isUnderLine,

String underLineColor, STUnderline.Enum underStyle,

boolean isItalic, boolean isStrike, boolean isHightLight,

STHighlightColor.Enum hightStyle, boolean isShd,

STShd.Enum shdStyle, String shdColor) {

setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,

underLineColor, underStyle, isItalic, isStrike, false, false,

false, false, false, false, false, null, isHightLight,

hightStyle, isShd, shdStyle, shdColor, null, 0, 0, 0);

}

/**

* @Description: 设置段落文本样式(高亮与底纹显示效果不同)设置字符间距信息(CTSignedTwipsMeasure)

* @param verticalAlign

* : SUPERSCRIPT上标 SUBSCRIPT下标

* @param position

* :字符间距位置:>0提升 <0降低=磅值*2 如3磅=6

* @param spacingValue

* :字符间距间距 >0加宽 <0紧缩 =磅值*20 如2磅=40

* @param indent

* :字符间距缩进 <100 缩

*/

public void setParagraphTextSimpleStyleInfo(XWPFParagraph p, XWPFRun pRun,

String colorVal, boolean isBlod, boolean isUnderLine,

String underLineColor, STUnderline.Enum underStyle,

boolean isItalic, boolean isStrike, boolean isHightLight,

STHighlightColor.Enum hightStyle, boolean isShd,

STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign,

int position, int spacingValue, int indent) {

setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,

underLineColor, underStyle, isItalic, isStrike, false, false,

false, false, false, false, false, null, isHightLight,

hightStyle, isShd, shdStyle, shdColor, verticalAlign, position,

spacingValue, indent);

}

/**

* @Description: 设置段落文本样式(高亮与底纹显示效果不同)设置字符间距信息(CTSignedTwipsMeasure)

* @param verticalAlign

* : SUPERSCRIPT上标 SUBSCRIPT下标

* @param position

* :字符间距位置:>0提升 <0降低=磅值*2 如3磅=6

* @param spacingValue

* :字符间距间距 >0加宽 <0紧缩 =磅值*20 如2磅=40

* @param indent

* :字符间距缩进 <100 缩

*/

public void setParagraphTextStyleInfo(XWPFParagraph p, XWPFRun pRun,

String colorVal, boolean isBlod, boolean isUnderLine,

String underLineColor, STUnderline.Enum underStyle,

boolean isItalic, boolean isStrike, boolean isDStrike,

boolean isShadow, boolean isVanish, boolean isEmboss,

boolean isImprint, boolean isOutline, boolean isEm,

STEm.Enum emType, boolean isHightLight,

STHighlightColor.Enum hightStyle, boolean isShd,

STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign,

int position, int spacingValue, int indent) {

if (pRun == null) {

return;

}

CTRPr pRpr = getRunCTRPr(p, pRun);

if (colorVal != null) {

pRun.setColor(colorVal);

}

// 设置字体样式

// 加粗

if (isBlod) {

pRun.setBold(isBlod);

}

// 倾斜

if (isItalic) {

pRun.setItalic(isItalic);

}

// 删除线

if (isStrike) {

pRun.setStrike(isStrike);

}

// 双删除线

if (isDStrike) {

CTOnOff dsCtOnOff = pRpr.isSetDstrike() ? pRpr.getDstrike() : pRpr

.addNewDstrike();

dsCtOnOff.setVal(STOnOff.TRUE);

}

// 阴影

if (isShadow) {

CTOnOff shadowCtOnOff = pRpr.isSetShadow() ? pRpr.getShadow()

: pRpr.addNewShadow();

shadowCtOnOff.setVal(STOnOff.TRUE);

}

// 隐藏

if (isVanish) {

CTOnOff vanishCtOnOff = pRpr.isSetVanish() ? pRpr.getVanish()

: pRpr.addNewVanish();

vanishCtOnOff.setVal(STOnOff.TRUE);

}

// 阳文

if (isEmboss) {

CTOnOff embossCtOnOff = pRpr.isSetEmboss() ? pRpr.getEmboss()

: pRpr.addNewEmboss();

embossCtOnOff.setVal(STOnOff.TRUE);

}

// 阴文

if (isImprint) {

CTOnOff isImprintCtOnOff = pRpr.isSetImprint() ? pRpr.getImprint()

: pRpr.addNewImprint();

isImprintCtOnOff.setVal(STOnOff.TRUE);

}

// 空心

if (isOutline) {

CTOnOff isOutlineCtOnOff = pRpr.isSetOutline() ? pRpr.getOutline()

: pRpr.addNewOutline();

isOutlineCtOnOff.setVal(STOnOff.TRUE);

}

// 着重号

if (isEm) {

CTEm em = pRpr.isSetEm() ? pRpr.getEm() : pRpr.addNewEm();

em.setVal(emType);

}

// 设置下划线样式

if (isUnderLine) {

CTUnderline u = pRpr.isSetU() ? pRpr.getU() : pRpr.addNewU();

if (underStyle != null) {

u.setVal(underStyle);

}

if (underLineColor != null) {

u.setColor(underLineColor);

}

}

// 设置突出显示文本

if (isHightLight) {

if (hightStyle != null) {

CTHighlight hightLight = pRpr.isSetHighlight() ? pRpr

.getHighlight() : pRpr.addNewHighlight();

hightLight.setVal(hightStyle);

}

}

if (isShd) {

// 设置底纹

CTShd shd = pRpr.isSetShd() ? pRpr.getShd() : pRpr.addNewShd();

if (shdStyle != null) {

shd.setVal(shdStyle);

}

if (shdColor != null) {

shd.setColor(shdColor);

}

}

// 上标下标

if (verticalAlign != null) {

pRun.setSubscript(verticalAlign);

}

// 设置文本位置

pRun.setTextPosition(position);

if (spacingValue > 0) {

// 设置字符间距信息

CTSignedTwipsMeasure ctSTwipsMeasure = pRpr.isSetSpacing() ? pRpr

.getSpacing() : pRpr.addNewSpacing();

ctSTwipsMeasure

.setVal(new BigInteger(String.valueOf(spacingValue)));

}

if (indent > 0) {

CTTextScale paramCTTextScale = pRpr.isSetW() ? pRpr.getW() : pRpr

.addNewW();

paramCTTextScale.setVal(indent);

}

}

/**

* @Description: 设置段落底纹(对整段文字起作用)

*/

public void setParagraphShdStyle(XWPFParagraph p, boolean isShd,

STShd.Enum shdStyle, String shdColor) {

CTPPr pPpr = getParagraphCTPPr(p);

CTShd shd = pPpr.isSetShd() ? pPpr.getShd() : pPpr.addNewShd();

if (shdStyle != null) {

shd.setVal(shdStyle);

}

if (shdColor != null) {

shd.setColor(shdColor);

}

}

/**

* @Description: 设置段落间距信息,一行=100 一磅=20

*/

public void setParagraphSpacingInfo(XWPFParagraph p, boolean isSpace,

String before, String after, String beforeLines, String afterLines,

boolean isLine, String line, STLineSpacingRule.Enum lineValue) {

CTPPr pPPr = getParagraphCTPPr(p);

CTSpacing pSpacing = pPPr.getSpacing() != null ? pPPr.getSpacing()

: pPPr.addNewSpacing();

if (isSpace) {

// 段前磅数

if (before != null) {

pSpacing.setBefore(new BigInteger(before));

}

// 段后磅数

if (after != null) {

pSpacing.setAfter(new BigInteger(after));

}

// 段前行数

if (beforeLines != null) {

pSpacing.setBeforeLines(new BigInteger(beforeLines));

}

// 段后行数

if (afterLines != null) {

pSpacing.setAfterLines(new BigInteger(afterLines));

}

}

// 间距

if (isLine) {

if (line != null) {

pSpacing.setLine(new BigInteger(line));

}

if (lineValue != null) {

pSpacing.setLineRule(lineValue);

}

}

}

// 设置段落缩进信息 1厘米≈567

public void setParagraphIndInfo(XWPFParagraph p, String firstLine,

String firstLineChar, String hanging, String hangingChar,

String right, String rigthChar, String left, String leftChar) {

CTPPr pPPr = getParagraphCTPPr(p);

CTInd pInd = pPPr.getInd() != null ? pPPr.getInd() : pPPr.addNewInd();

if (firstLine != null) {

pInd.setFirstLine(new BigInteger(firstLine));

}

本文来源:https://www.bwwdw.com/article/nwk3.html

Top