看了很多资料,就一点一点总结吧。
word2003和word2007以及以上的后缀名都不一样,一个是doc一个是docx,所以在解析的时候也不一样,而这边主要是使用poi。但是看了很多资料都没有找到所谓的3.8的版本,在官网上只能找到3.11版本(或是是个人的英语水平不行吧)
这个小dome主要就是一个简单的读取word文档,复杂的继续研究:
public class ReadWord {
public static void main(String[] args) { try { //2003文档 InputStream is = new FileInputStream(new File("files\\2003.doc")); WordExtractor ex = new WordExtractor(is); String text2003 = ex.getText(); System.out.println(text2003); System.out.println("=========================================="); //word 2007 OPCPackage opcPackage = POIXMLDocument.openPackage("files\\2007.docx"); POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage); String text2007 = extractor.getText(); System.out.println(text2007); } catch (Exception e) { e.printStackTrace(); } }}同样,2003也可以使用一下方法:
public class WordToTxt {
// 创建字符串缓冲区 /* * 不能写成StringBuffer stringBuffer=null; 否则会报空指针异常 */ StringBuffer stringBuffer = new StringBuffer(); // 转换word public String readWord() { // word文档路径 String pathword = "files\\2003.doc"; try { // 创建存储word文档的对象 HWPFDocument doc = new HWPFDocument(new FileInputStream(pathword)); // 用来获得word文档内容 Range range = doc.getRange(); // 文档段落数目 int paragraphCount = range.numParagraphs(); System.out.println(paragraphCount+"=====段落======="); // 遍历段落读取数据 for (int i = 0; i < paragraphCount; i++) { Paragraph pph = range.getParagraph(i); stringBuffer.append(pph.text()); System.out.println(stringBuffer.toString()); System.out.println("========================="); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return stringBuffer.toString().trim(); } public static void main(String[] args) { new WordToTxt().readWord(); }}