看了很多资料,就一点一点总结吧。


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();
    }
}