添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

XWPF 文档(POI API 文档) (apache.org)

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

XWPFDocument类

1. 构造方法

  • XWPFDocument(java.io.InputStream is)  输入流读文件打开
  • XWPFDocument document = new XWPFDocument(new FileInputStream(path));
    
  • XWPFDocument(OPCPackage pkg) 打开文档
  • XWPFDocument document = new XWPFDocument(XWPFDocument.openPackage("C:\Users\admin\Desktop\0.docx"));
    

    注意: 两种方式的区别 文件流打开

     new XWPFDocument(new FileInputStream(path)) 打开操作word不会修改原模板输出操作时。
     new XWPFDocument(XWPFDocument.openPackage("C:\Users\admin\Desktop\0.docx")) 原来的word模板会被修改
    
  • createParagraph() 创建段落
  • createTable() 创建一个空表,其中一行和一列为默认值。也可以指定行列
  • createStyles() 如果文档尚未存在,则创建空样式
  • getParagraphs() 返回持有头或脚文本的段落。
  • insertNewParagraph(org.apache.xmlbeans.XmlCursor cursor) 在光标的位置添加新段落。 游标=光标
  • removeBodyElement(int pos)从word文档body元素阵列列表中删除身体元素(从上到下)
  • write(java.io.OutputStream out) 写文件
  • 实例demo

        public class Test004 {
            public static void main(String[] args) throws IOException, OpenXML4JException, XmlException {
                XWPFDocument document = new XWPFDocument(new FileInputStream("C:\Users\admin\Desktop\0.docx"));
                XWPFParagraph paragraph = document.createParagraph();
                //获取所有段落
                List<XWPFParagraph> paragraphs = document.getParagraphs();
                for (int i = 0; i < paragraphs.size(); i++) {
                    XWPFParagraph paragraph1 = paragraphs.get(i);
                    if (paragraph1.getText().equals("开头")){
                        //将一个新运行追加到这一段
                        XWPFRun r1=paragraph.createRun();
                        r1.addCarriageReturn();
        //                获取当前光标位置
                        XmlCursor cursor = paragraph1.getCTP().newCursor();
                        cursor.toNextSibling();
        //                光标位置插入新段落
                        XWPFParagraph newParagraph = document.insertNewParagraph(cursor);
                        XWPFRun run = newParagraph.createRun();
                        run.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.LIGHT_GRAY);
                        String s= "                                                                        ";
                        String s1 = "插入当前位置!!!!";
                        StringBuilder stringBuilder = new StringBuilder();
                        for (int j = 0; j < 64-s1.length(); j++) {
                            stringBuilder.append(" ");
                        run.setText(s1+stringBuilder);
                        document.removeBodyElement(document.getPosOfParagraph(paragraph1));
                    System.out.println("死循环"+i);
                document.write(new FileOutputStream("C:\Users\admin\Desktop\001.docx"));
                document.close();
        hygge
          
    粉丝