【笔记】Java通过Aspose.Words操作Word文件

前言

Java通过Aspose.Words操作Word文件

添加依赖

pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<repositories>
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://releases.aspose.com/java/repo/</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>23.4</version>
<classifier>jdk17</classifier>
</dependency>
</dependencies>

引入依赖

1
import com.aspose.words.*;

Document对象

通过文件路径创建Document对象

<file>.docx:读取的Word文件

1
Document document = new Document("<file>.docx");

获取文档总页数

1
int pageCount = document.getPageCount();

获取所有段落

1
2
3
4
5
NodeCollection paragraphList = document.getChildNodes(NodeType.PARAGRAPH, true);

for (Paragraph paragraph : (Iterable<Paragraph>) paragraphList) {
System.out.println(paragraph.getRange().getText());
}

获取所有表格

1
2
3
4
5
6
7
8
9
10
NodeCollection tables = document.getChildNodes(NodeType.TABLE, true);

for (Table table : (Iterable<Table>) tables) {
for (Row row : table.getRows()) {
for (Cell cell : row.getCells()) {
System.out.print(cell.getRange().getText() + "\t");
}
System.out.println();
}
}

获取元素所在页码

1
2
3
4
LayoutCollector layoutCollector = new LayoutCollector(document);

int paragraphPageNumber = layoutCollector.getStartPageIndex(paragraph);
int paragraphPageNumber = layoutCollector.getStartPageIndex(table);

另存为文件

1
document.save("<file>.docx");

DocumentBuilder对象

通过Document对象创建DocumentBuilder对象

1
DocumentBuilder documentBuilder = new DocumentBuilder(document);

移动光标

移动光标到文档末尾

1
documentBuilder.moveToDocumentEnd();

插入数据

插入字符串

1
builder.write("");

插入换行符

1
documentBuilder.insertBreak(BreakType.PARAGRAPH_BREAK);

插入分页符

1
documentBuilder.insertBreak(BreakType.PAGE_BREAK);

完成