poi操作word2007常用方法总结.doc
poi操作word 2007常用方法总结import java.io.File;import java.io.FilelnputStream;import java.io.FileOutputStream;import java.ioO Exception;import java.i onputStream;import java.math.Biglnteger;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import mons.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;importorg.apache.poi.xwpf.usermodel.lBodyElement;importorg.apache.poi.xwpf.usermodel.ParagraphAlignment;importorg.apache.poi.xwpf.usermodel.TextAlignment;importorg.apache.poi.xwpf.usermodel.VerticalAlign;importorg.apache.poi.xwpf.usermodel.XWPFDocument;importorg.apache.poi.xwpf.usermodel.XWPFParagraph;importorg.apache.poi.xwpf.usermodel.XWPFRelation;importorg.apache.poi.xwpf.usermodel.XWPFRun;importorg.apache.poi.xwpf.usermodel.XWPFTable;importorg.apache.poi.xwpf.usermodel.XWPFTableCell;importorg.apache.poi.xwpf.usermodel.XWPFTableRow;importorg.apache.xmlbeans.XmlException;importorg.apache.xmlbeans.XmlToken;importorg.apache.xmlbeans.impl.xb.xmlschema.SpaceAttribute;importorg.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;importorg.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;importorg.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTBackground;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTColor;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTEm;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTFIdChar;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTHighlight;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTHpsMeasure;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTMarkupRange;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageBorders;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageS z;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTParaRPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTSignedTwipsMeasure;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTextScale;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTUnderline;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STEm;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STFIdCharType;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STHeightRule;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STPageOrientation;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline;importorg.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;public class POI_Word2007_ 工具类 _S3_Test /替换复制表格段落Word插入书签*/* Description:添加书签String colorVal,boolean isBlod, boolean isUnderLine,String colorVal,boolean isBlod, boolean isUnderLine,*/public void addParagraphContentBookmarkBasicStyle(XWPFParagraph p,String content, BigInteger markId, String bookMarkName,boolean isInsert,boolean isNewLine, String fontFamily,boolean isBlod,String fontSize, String colorVal,boolean isUnderLine, String underLineColor,STUnderline.Enum underStyle,boolean isItalic,boolean isStrike) CTBookmark bookStart = p.getCTP().addNewBookmarkStart();bookStart.setld(markld);bookStart.setName(bookMarkName);XWPFRun pRun = getOrAddParagraphFirstRun(p, islnsert, isNewLine);setParagraphRunFontlnfo(p, pRun, content, fontFamily, fontSize);setParagraphTextStylelnfo(p, pRun, colorVal, isBlod, isUnderLine,underLineColor, underStyle, isItalic, isStrike,false , falsefalse , false , false , false , false , null , false , null , false null , null , null , 0, 0, 0);CTMarkupRange bookEnd = p.getCTP().addNewBookmarkEnd();bookEnd.setld(markld);* Description:添加书签*/public void addParagraphContentBookmark(XWPFParagraph p, String content,Biglnteger markld, String bookMarkName,boolean islnsert,boolean isNewLine, String fontFamily, String fontSize,String colorVal,boolean isBlod, boolean isUnderLine,String underLineColor, STUnderline.Enum underStyle,booleanisltalic,boolean isStrike,boolean isDStrike,booleanisShadow,booleanisVanish,booleanisEmboss,booleanislmprint,booleanisOutline,boolean isEm,STEm.Enum emType,booleanisHightLight,STHighlightColor.Enum hightStyle,boolean isShd,STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign,int position, int spacingValue, int indent) CTBookmark bookStart = p.getCTP().addNewBookmarkStart();bookStart.setld(markld);bookStart.setName(bookMarkName);XWPFRun pRun = getOrAddParagraphFirstRun(p, islnsert, isNewLine);setParagraphRunFontlnfo(p, pRun, content, fontFamily, fontSize);setParagraphTextStylelnfo(p, pRun, colorVal, isBlod, isUnderLine,underLineColor, underStyle, isltalic, isStrike, isDStrike,isShadow, isVanish, isEmboss, islmprint, isOutline, isEm,emType, isHightLight, hightStyle, isShd, shdStyle, shdColor,verticalAlign, position, spacingValue, indent);String colorVal,boolean isBlod, boolean isUnderLine,CTMarkupRange bookEnd = p.getCTP().addNewBookmarkEnd();bookEnd.setld(markld);/*Word*/插入超链接* Description:默认的超链接样式*/public void addParagraphTextHyperlinkBasicStyle(XWPFParagraph paragraph,String url, String text, String fontFamily, String fontSize,isStrike) String colorVal,boolean isBlod, boolean isltalic, booleanaddParagraphTextHyperlink(paragraph, url, text, fontFamily, fontSize,colorVal, isBlod,true , "0000FF" , STUnderline.SINGLE, isltalic,isStrike,false , false , false , false , false , false , falsenull , false , null , false , null , null , null , 0, 0, 0);* Description:设置超链接样式* 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 relationshipString id = paragraph.getDocument().getPackagePart().addExternalRelationship(url,XWPFRelation.HYPERLINK.getRelation().getld();/ Append the link and bind it to the relationshipCTHyperlink cLink = paragraph.getCTP().addNewHyperlink(); cLink.setId(id);/ Create the linked textCTText ctText = CTText.Factory.newlnstance();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 Biglnteger(fontSize);CTHpsMeasure szCs = rpr.isSetSzCs() ? rpr.getSzCs(): rpr .addNewSzCs();szCs.setVal( new BigInteger(fontSize);/设置超链接样式/字体颜色if (StringUtils.isNotBlank(colorVal) CTColor color = CTColor.Factory.newlnstance();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.addNewl();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 (islmprint) CTOnOff isImprintCtOnOff = rpr.addNewlmprint(); islmprintCtOnOff.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 Biglnteger(String.valueOf(position);if (spacingValue !=0) /设置字符间距信息CTSignedTwipsMeasure ctSTwipsMeasure = rpr.addNewSpacing();ctSTwipsMeasure.setVal(new Biglnteger(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:页脚:显示页码信息*/throws Exception public void simpleNumberFooter(XWPFDocument document)CTP ctp = CTP.Factory.newlnstance();XWPFParagraph codePara =new XWPFParagraph(ctp, document);XWPFRun r1 = codePara.createRun();r1.setText("第");null ,"微软雅黑","22");setParagraphRunFontlnfo(codePara, r1.r1 = codePara.createRun();CTFldChar fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFIdCharType.BEGIN);r1 = codePara.createRun();CTText ctText = r1.getCTR().addNewlnstrText();ctText.setStringValue("PAGE * MERGEFORMAT");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontlnfo(codePara, r1,null ,"微软雅黑","22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFIdCharType.END);r1 = codePara.createRun();r1.setText( "页 总共”);setParagraphRunFontlnfo(codePara, r1,null ,"微软雅黑 ”,"22");r1 = codePara.createRun();fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFIdCharType.BEGIN);r1 = codePara.createRun();ctText = r1.getCTR().addNewlnstrText();ctText.setStringValue("NUMPAGES * MERGEFORMAT ");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontlnfo(codePara, r1,null ,"微软雅黑 ”,"22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFIdCharType.END);r1 = codePara.createRun();r1.setText(页");setParagraphRunFontlnfo(codePara, r1,null ,"微软雅黑 ”,"22");setParagraphAlignlnfo(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 XWPFHeade