Чтение файла .docx в java

Я пытаюсь прочитать один файл в 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 он печатает странные символы. Как я могу прочитать файл .docx в Java.


person Addict    schedule 22.05.2013    source источник
comment
Apache POI кажется наиболее распространенной библиотекой, используемой для чтения форматов файлов Microsoft.   -  person jahroy    schedule 22.05.2013
comment
Это, безусловно, верно для Excel (.xls и .xlsx).   -  person JasonPlutext    schedule 28.11.2014
comment
Возможный дубликат Как читать файл Doc или Docx в java?   -  person mlt    schedule 07.10.2015
comment
.docx файлы не являются обычными текстовыми файлами, которые имеют расширение файла .txt; и они кодируются по-разному. Вам понадобится API, чтобы прочитать его, как было предложено @jahroy выше.   -  person Tech Expert Wizard    schedule 11.11.2020


Ответы (3)


Внутри файлы .docx организованы как заархивированные XML-файлы, тогда как .doc представляет собой двоичный формат файлов. Таким образом, вы не можете читать ни один из них напрямую. Взгляните на docx4j или Apache POI.

Если вы пытаетесь создать файл .docx или управлять им, попробуйте docx4j Вот источник

или выберите apachePOI

person Community    schedule 22.05.2013

Вы не можете напрямую читать файл docx или файл doc. Вам нужно иметь API для чтения текстовых файлов. Используйте Apache POI http://poi.apache.org/. Если у вас есть какие-либо сомнения, обратитесь к этой ветке на stackoverflow.com Как читать Файл Doc или Docx в Java?

person vkrams    schedule 22.05.2013

у вас должны быть следующие 6 банок:

  1. xmlbeans-2.3.0.jar
  2. dom4j-1.6.1.jar
  3. poi-ooxml-3.8-20120326.jar
  4. poi-ooxml-schemas-3.8-20120326.jar
  5. poi-блокнот-3.2-FINAL.jar
  6. пои-3.5-ФИНАЛ.банка

Код:

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");
 }
} 
person Swati Pisal    schedule 28.11.2014
comment
Ваш код не будет компилироваться. абзацы не определены - person SpringLearner; 08.12.2015