前言
最近需要做一些NLP 方面的工作,使用的是Java,在此总结一下使用Java读取Word(.doc)格式文件的方法。
Apache基金会非常厉害,开源工具包POI就可以处理微软家的文档,甚至包括Excel和PowerPoint。我们就使用POI来做。
步骤
下载
https://poi.apache.org/download.html 下载Binary Distribution,并解压
导入
在Intellij IDEA中,点击File--Project Structure--Library,然后添加里边所有的jar包
使用
核心在于org.apache.poi.hwpf.extractor.WordExtractor和org.apache.poi.hwpf.HWPFDocument这两个。
贴上代码
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.WordExtractor; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Demo { public void readWordFile(String path) { File file = null; WordExtractor extractor = null; file = new File(path); try { HWPFDocument doc = new HWPFDocument(new FileInputStream((file.getAbsolutePath()))); extractor = new WordExtractor(doc); String fileData = extractor.getText();//此处还有很多别的方法可以使用 System.out.println(fileData); } catch (IOException e) { e.printStackTrace(); } } } public class RunDemo { public static void main(String[] dd){ Demo d=new Demo(); String path="/home/chyq/Desktop/我的文档.doc"; d.readWordFile(path); } }
一些需要说明的
- 如果是docx,将HWPF改成XWPF,基本是一样的
- extractor对象的几个get方法说明:
- getText() :返回String,全文内容
-
getMainTextboxText() 返回String[],读取的是多个文本框中的内容
-
getParagraphText() 返回String[],读取的是多个自然段的内容
- 还有读取页眉页脚等方法,更多详细API可以参考:http://book2s.com/java/src/package/org/apache/poi/hwpf/extractor/wordextractor.html#1d7167f4e597fb0328033cb4c51b178b , 这个比官方文档全。
- 读取的图片都没了,表格只保留了文字部分,格式都没有了。其余的格式(换行、回车等)均被保留。