java如何读取word文档
读取Word文档的方法
Java可以通过多种库读取Word文档(.doc或.docx格式),以下是常用的方法:
使用Apache POI库(支持.docx和.doc)
Apache POI是处理Microsoft Office文档的流行库,支持Word的两种格式。
添加Maven依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
读取.docx文件示例代码:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileInputStream;
import java.util.List;
public class ReadDocx {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("document.docx");
XWPFDocument document = new XWPFDocument(fis);
List<XWPFParagraph> paragraphs = document.getParagraphs();
for (XWPFParagraph para : paragraphs) {
System.out.println(para.getText());
}
document.close();
fis.close();
}
}
读取.doc文件示例代码:
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import java.io.FileInputStream;
public class ReadDoc {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("document.doc");
HWPFDocument document = new HWPFDocument(fis);
WordExtractor extractor = new WordExtractor(document);
System.out.println(extractor.getText());
document.close();
fis.close();
}
}
使用docx4j库(仅支持.docx)
docx4j是另一个专门处理.docx文件的库。
添加Maven依赖:
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j</artifactId>
<version>11.4.5</version>
</dependency>
示例代码:
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import java.io.File;
public class ReadDocx4j {
public static void main(String[] args) throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(
new File("document.docx"));
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
System.out.println(documentPart.getContent().toString());
}
}
使用Tika库(通用文档解析)
Apache Tika可以解析多种文档格式,包括Word。
添加Maven依赖:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>2.7.0</version>
</dependency>
示例代码:
import org.apache.tika.Tika;
import java.io.File;
public class ReadWithTika {
public static void main(String[] args) throws Exception {
Tika tika = new Tika();
String content = tika.parseToString(new File("document.docx"));
System.out.println(content);
}
}
处理注意事项
- 对于大型Word文档,考虑使用流式处理避免内存问题
- 不同库对复杂格式(表格、图片等)的支持程度不同
- 处理旧版.doc文件时可能需要额外的字体配置
- 关闭文件输入流和文档对象以防止资源泄漏
性能优化建议
- 对于只需要文本内容的情况,使用轻量级的Tika可能更高效
- 需要精细控制文档元素时,POI或docx4j更合适
- 批量处理时可以考虑缓存解析器实例







