当需要从 Word 文档中提取数据的时候,我们可以使用 Apache POI 来读取 ".doc" 和 ".docx" 文件。下面是如何利用 POI 解析 Word 文档中数据的攻略:
1. 添加 POI 依赖
在项目中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
2. 读取 .doc 文件
首先,我们需要创建一个 HWPFDocument 对象,它代表了 Word 文档:
File file = new File("example.doc");
FileInputStream fis = new FileInputStream(file);
HWPFDocument doc = new HWPFDocument(fis);
然后,我们可以通过以下方式来获取文档中的文本:
Range range = doc.getRange();
String text = range.text();
3. 读取 .docx 文件
对于 .docx 文件,我们需要创建一个 XWPFDocument 对象:
File file = new File("example.docx");
FileInputStream fis = new FileInputStream(file);
XWPFDocument doc = new XWPFDocument(fis);
我们可以使用以下代码来获取文档中的段落和表格数据:
// 获取所有段落
List<XWPFParagraph> paragraphs = doc.getParagraphs();
for (XWPFParagraph para : paragraphs) {
String text = para.getText();
System.out.println(text);
}
// 获取所有的表格
List<XWPFTable> tables = doc.getTables();
for (XWPFTable table : tables) {
// 遍历表格所有的行和列
for (int i = 0; i < table.getNumberOfRows(); i++) {
XWPFTableRow row = table.getRow(i);
for (int j = 0; j < row.getTableCells().size(); j++) {
System.out.println(row.getCell(j).getText());
}
}
}
示例1. 读取 .doc 中的表格数据
假设我们要读取如下 Word 文档中的表格数据:
姓名 | 年龄 | 性别 |
---|---|---|
张三 | 20 | 男 |
李四 | 22 | 女 |
我们可以使用以下代码来解析 .doc 文件中的表格数据:
File file = new File("example.doc");
FileInputStream fis = new FileInputStream(file);
HWPFDocument doc = new HWPFDocument(fis);
Range range = doc.getRange();
TableIterator tableIt = new TableIterator(range);
while (tableIt.hasNext()) {
Table table = tableIt.next();
for (int i = 0; i < table.numRows(); i++) {
TableRow row = table.getRow(i);
for (int j = 0; j < row.numCells(); j++) {
TableCell cell = row.getCell(j);
String text = cell.getParagraph(0).text().trim();
System.out.print(text + "\t");
}
System.out.println();
}
}
示例2. 读取 .docx 中的段落数据
假设我们要读取如下 Word 文档中的段落数据:
标题
段落1
段落2
我们可以使用以下代码来解析 .docx 文件中的段落数据:
File file = new File("example.docx");
FileInputStream fis = new FileInputStream(file);
XWPFDocument doc = new XWPFDocument(fis);
List<XWPFParagraph> paragraphs = doc.getParagraphs();
for (XWPFParagraph para : paragraphs) {
String text = para.getText();
System.out.println(text);
}
以上是利用 POI 解析 Word 文档中数据的攻略及两条示例,希望对你有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java如何利用poi解析doc和docx中的数据 - Python技术站