java - 使用java获取word文件的文本
问题描述
我想使用java构建一个程序来获取word文件的文本。我正在使用 Apache POI。要获取 word 文档,我正在使用文件选择器。
到目前为止,这是我的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
wordFileButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
FileChooser fileChooser = new FileChooser();
setupFilter(fileChooser);
File wordFile= fileChooser.showOpenDialog(primaryStage);
System.out.print(wordFile.getAbsolutePath());
try {
getText(wordFile);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
private void setupFilter(FileChooser fileChooser) {
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Word document", "*.docx"));
}
private void getText(File file) throws Exception {
XWPFDocument docx = new XWPFDocument(new FileInputStream(file));
XWPFWordExtractor we = new XWPFWordExtractor(docx);
System.out.println(we.getText());
}
这是行不通的。相反,我得到一个错误:
/Users/name/Desktop/Das ist ein Test.docxException in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:307)
at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:47)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:142)
at Main.getText(Main.java:72)
at Main$1.handle(Main.java:47)
at Main$1.handle(Main.java:1)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8885)
at javafx.controls/javafx.scene.control.Button.fire(Button.java:203)
at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
... 49 more
我正在关注互联网上的两个教程。
解决方案
推荐阅读
- python-3.x - Opencv3 - 如何根据轮廓和矩形向我计数的人提供 ID?
- pytorch - 实施自我关注
- java - JavaFX KEY_TYPED 事件什么都不做
- python - 如何找到 conn = psycopg2.connect(dbname=, user=, password=, host = ) 的参数
- python - matplotlib / seaborn 中的绘图持续时间
- java - 构建为发布 APK 后出错,但调试 APK 没有错误 - 错误:找到两个区分大小写的 getter 或字段
- javascript - 使用动态ip从html表中获取数据并将数据填充到javascript对象中
- cordova - 将自定义构建/准备步骤添加到项目
- javascript - 当我单击粗刷按钮时,如何使用 javascript 在 html 中删除画布中的线宽
- elasticsearch - elasticsearch - 查找特定字段中的所有单词