Word——Apache POI详解

1、文档API

Apache POI 提供纯 Java API 来处理 Microsoft Office word。我们可以创建新的word文档,从Java程序中写入和读取数据。

  • HWPF(Horrible Word Processor Format)用于读写MS-Word 的.doc扩展文件。
  • XWPF(XML Word Processor Format)用于读写MS-Word 的.docx扩展文件。

常用类

类名描述
HWPFDocument它用于处理 .doc 扩展文件
XWPFDocument它用于创建具有 .docx 文件格式并位于org.apache.poi.xwpf.usermodel包中的MS-Word 文档
XWPFParagraph它用于在word文档中创建段落,位于org.apache.poi.xwpf.usermodel包中
XWPFRun它用于向段落添加文本区域并位于org.apache.poi.xwpf.usermodel包中
XWPFStyle它用于为word文档中的对象元素添加不同的样式,位于org.apache.poi.xwpf.usermodel包中
XWPFTable用于在word文档中添加表格,位于org.apache.poi.xwpf.usermodel包中
XWPFWordExtractor它是一个基本的解析器类,用于从 Word 文档中提取简单文本

2、创建文档

为了创建新的 Microsoft Word 文件,Apache POI 提供了 XWPFDocument 类。这个类在Java程序中用于处理word文档。

示例

public class CreateWord {
    public static void main(String[] args) {
        XWPFDocument document = new XWPFDocument();
        try(OutputStream fileOut = new FileOutputStream("data/create.docx")) {
            document.write(fileOut);
            System.out.println("File created");
        }catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

3、创建段落

为了在 MS word 文件中创建段落,Apache POI 提供了 XWPFParagraph 类。此类使用 XWPFRun 来设置段落的 setText() 方法。

示例

public class ParagraphExample {
    public static void main(String[] args) {
        XWPFDocument doc = new XWPFDocument();
        try(OutputStream os = new FileOutputStream("data/paragraph.doc")) {
            XWPFParagraph paragraph = doc.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("Hello, This is yiidian. This paragraph is written "+
                    "by using XWPFParagrah.");
            doc.write(os);
        }catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

在这里插入图片描述

4、创建表格

要在 Word 文档中创建表格,我们可以使用位于 org.apache.poi.xwpf.usermodel.XWPFTable 包中的XWPFTable类。Apache POI 添加了一个用于创建行的类 XWPFTableRow 。

XWPFTable

方法描述
public void addNewCol()它为该表中的每一行添加一个新列
public void addRow(XWPFTableRow row)它向表中添加了一个新行
public XWPFTableRow createRow()它创建一个新的
public java.lang.String getText()它用于提取单元格中的文本
public void setWidth(int width)它用于设置宽度
public int getNumberOfRows()它用于获取表中的行数

示例

public class TableExample {
    public static void main(String[] args) {
        XWPFDocument document= new XWPFDocument();
        try(FileOutputStream out = new FileOutputStream(new File("data/table.docx"))){
            //创建表格
            XWPFTable tab = document.createTable();
            //第一行
            XWPFTableRow row = tab.getRow(0);
            //创建列
            row.getCell(0).setText("Sl. No.");
            row.addNewTableCell().setText("Name");
            row.addNewTableCell().setText("Email");
            //第二行
            row = tab.createRow();
            row.getCell(0).setText("1.");
            row.getCell(1).setText("eric");
            row.getCell(2).setText("eric@gmail.com");
            //第三行
            row = tab.createRow();
            row.getCell(0).setText("2.");
            row.getCell(1).setText("jack");
            row.getCell(2).setText("jack@gmail.com");
            document.write(out);
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}

在这里插入图片描述

5、设置文字样式

为了设置文本的样式、字体、对齐方式等,Apache POI 提供了setItalic()、setBold() 等方法。这些方法很有用,可以在Java 程序中用于处理word 文档。

示例

public class StyleExample {
    public static void main(String[] args) {
        XWPFDocument doc = new XWPFDocument();
        try(OutputStream os = new FileOutputStream("data/style.docx")) {
            XWPFParagraph paragraph = doc.createParagraph();
            //Set Bold an Italic  
            XWPFRun xr = paragraph.createRun();
            xr.setBold(true);
            xr.setItalic(true);
            xr.setText("This text is Bold and have Italic style");
            xr.addBreak();
            doc.write(os);
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}

在这里插入图片描述

6、词对齐

为了将文本向右、向左和居中对齐,Apache POI 提供了 setAlignment() 方法,该方法采用对齐常量(例如 CENTER)。

  • ParagraphAlignment.RIGHT:将段落向右对齐。
  • ParagraphAlignment.LEFT:将段落左对齐。
  • ParagraphAlignment.CENTER:将段落与中心对齐。

示例

public class AligningExample {
    public static void main(String[] args) {
        XWPFDocument doc = new XWPFDocument();
        try(OutputStream os = new FileOutputStream("data/aligning.docx")) {
            XWPFParagraph paragraph = doc.createParagraph();
            paragraph.setAlignment(ParagraphAlignment.RIGHT);
            XWPFRun run = paragraph.createRun();
            run.setText("Text is aligned right");
            doc.write(os);
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}

在这里插入图片描述

7、提取文本

为了从word文档中提取文本,XWPFWordExtractor类提供了一个方法 getText() 。此方法从文档中获取所有文本。

示例

public class ReadingText {
    public static void main(String[] args) {
        try(FileInputStream fis = new FileInputStream("data/style.docx")) {
            XWPFDocument file   = new XWPFDocument(OPCPackage.open(fis));
            XWPFWordExtractor ext = new XWPFWordExtractor(file);
            System.out.println(ext.getText());
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}
This text is Bold and have Italic style

8、提取段落

为了提取段落文本,我们使用 XWPFDocument 类的 getParagraphs() 方法。此方法返回文档所有段落的列表,该列表可以存储在列表变量中并通过迭代循环获取。

示例
在这里插入图片描述

public class ReadParagraphExample {
    public static void main(String[] args) {
        try(FileInputStream fis = new FileInputStream("data/aa.docx")) {
            XWPFDocument doc    = new XWPFDocument(OPCPackage.open(fis));
            java.util.List<XWPFParagraph> paragraphs =  doc.getParagraphs();
            for (XWPFParagraph paragraph: paragraphs){
                System.out.println(paragraph.getText());
            }
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}
111111111


22222222
33



4444





546564
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache POI 是一个用于操作 Microsoft Office 文档的 Java 库。要使用 Apache POI 生成 Word 文档,可以按照以下步骤进行操作: 1. 添加 Apache POI 依赖项:在项目的构建文件(如 Maven 的 pom.xml)中添加 Apache POI 的依赖项。例如,对于最新版本的 Apache POI,可以添加以下依赖项: ```xml <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> </dependencies> ``` 2. 创建 Word 文档对象:使用 Apache POI 的 XWPFDocument 类创建一个新的 Word 文档对象。 ```java XWPFDocument document = new XWPFDocument(); ``` 3. 添加段落和文本内容:使用 XWPFDocument 对象的 createParagraph() 方法创建段落对象,然后使用段落对象的 createRun() 方法创建文本运行对象,并设置文本内容。 ```java XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); run.setText("Hello, World!"); ``` 4. 格式化文本内容:可以使用 XWPFRun 对象的方法来设置文本样式,如字体、字号、颜色等。 ```java run.setFontSize(12); run.setFontFamily("Arial"); run.setColor("FF0000"); // 红色 ``` 5. 添加表格:使用 XWPFDocument 对象的 createTable() 方法创建表格对象,然后可以使用表格对象的方法来添加行和单元格,并设置内容。 ```java XWPFTable table = document.createTable(); XWPFTableRow row = table.getRow(0); row.getCell(0).setText("Cell 1"); row.createCell().setText("Cell 2"); ``` 6. 保存文档:使用 XWPFDocument 对象的 write() 方法将文档保存到文件或输出流中。 ```java FileOutputStream out = new FileOutputStream("output.docx"); document.write(out); out.close(); ``` 这只是 Apache POI 生成 Word 文档的基本使用方法,还有更多高级的功能和选项可以探索。可以参考 Apache POI 的官方文档和示例代码来获得更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值