在java中读取.docx文件

时间:2013-05-22 03:20:19

标签: java apache-poi docx docx4j

我正在尝试在java中读取一个文件,以下是代码:

public void readFile(String fileName){
        try {
        BufferedReader reader= new BufferedReader(new FileReader(fileName)); 
        String line=null;
        while((line=reader.readLine()) != null ){
            System.out.println(line);
        }
        }catch (Exception ex){}
            }

在txt文件的情况下工作正常。但是在docx文件的情况下,它是打印奇怪的字符。我怎样才能用Java读取.docx文件。

5 个答案:

答案 0 :(得分:9)

import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    public void readDocxFile() {
            try {
                File file = new File("C:/NetBeans Output/documentx.docx");
                FileInputStream fis = new FileInputStream(file.getAbsolutePath());

                XWPFDocument document = new XWPFDocument(fis);

                List<XWPFParagraph> paragraphs = document.getParagraphs();


                for (XWPFParagraph para : paragraphs) {
                    System.out.println(para.getText());
                }
                fis.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

答案 1 :(得分:6)

内部 .docx 文件被组织为压缩 XML - 文件,而 .doc 二进制文件格式。所以你不能直接阅读其中任何一个。查看 docx4j Apache POI

如果您尝试创建或操作.docx文件,请尝试 docx4j Here is the source

或去apachePOI

答案 2 :(得分:4)

您可以查看Apache POI

答案 3 :(得分:2)

您无法直接阅读docx文件或doc文件。您需要有一个API来读取word文件。使用Apache POI http://poi.apache.org/。如果您有任何疑问,请参阅stackoverflow.com上的此主题 How read Doc or Docx file in java?

答案 4 :(得分:0)

你必须有以下6罐:

  1. 的xmlbeans-2.3.0.jar
  2. DOM4J-1.6.1.jar
  3. POI-OOXML-3.8-20120326.jar
  4. POI-OOXML-架构 - 3.8-20120326.jar
  5. POI暂存器-3.2-FINAL.jar
  6. POI-3.5 FINAL.jar
  7. 代码:

    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Iterator;
    import java.util.List;
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.extractor.WordExtractor;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    
    public class test {
     public static void readDocxFile(String fileName) {
    try {
    File file = new File(fileName);
    FileInputStream fis = new FileInputStream(file.getAbsolutePath());
    XWPFDocument document = new XWPFDocument(fis);
    for(int i=0;i<paragraphs.size();i++){
        System.out.println(paragraphs.get(i).getParagraphText());
    }
    fis.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    public static void main(String[] args) {
     readDocxFile("C:\\Users\\sp0c43734\\Desktop\\SwatiPisal.docx");
     }
    }