java 如何读取word
读取 Word 文档的方法
使用 Apache POI 库
Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 格式文件,包括 Word 文档(.doc 和 .docx)。以下是使用 POI 读取 Word 文档的示例代码:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadWordDoc {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.docx");
XWPFDocument document = new XWPFDocument(fis)) {
for (XWPFParagraph paragraph : document.getParagraphs()) {
System.out.println(paragraph.getText());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Tika 库
Apache Tika 是一个内容分析工具包,可以自动检测和提取多种文件类型的内容,包括 Word 文档。以下是使用 Tika 读取 Word 文档的示例代码:
import org.apache.tika.Tika;
import java.io.File;
import java.io.IOException;
public class ReadWordWithTika {
public static void main(String[] args) {
Tika tika = new Tika();
try {
String content = tika.parseToString(new File("example.docx"));
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 docx4j 库
docx4j 是另一个专门用于处理 Word 文档的 Java 库,特别适合处理复杂的 .docx 文件。以下是使用 docx4j 读取 Word 文档的示例代码:
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.exceptions.Docx4JException;
public class ReadWordWithDocx4j {
public static void main(String[] args) {
try {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File("example.docx"));
String text = wordMLPackage.getMainDocumentPart().getContent().toString();
System.out.println(text);
} catch (Docx4JException e) {
e.printStackTrace();
}
}
}
处理旧版 .doc 文件
如果需要处理旧版的 .doc 文件(Word 97-2003),可以使用 POI 的 HWPF 组件:

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadOldWordDoc {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.doc");
HWPFDocument document = new HWPFDocument(fis)) {
WordExtractor extractor = new WordExtractor(document);
System.out.println(extractor.getText());
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 对于大型 Word 文档,考虑使用流式读取方法以避免内存问题
- 处理复杂格式时,可能需要结合多个库的功能
- 确保添加正确的依赖项到项目中(如 poi-ooxml、tika-core、docx4j 等)
- 不同版本的 Word 文件可能需要不同的处理方法






