2

我正在尝试将 word 文件读入 R 以便对其进行文本解析。经过一段时间的研究,我发现 Apache POI 是我的最佳选择,因为它似乎是处理不同 Word 格式的最灵活的方式。

我试图遵循 R 包xlsx' orcommonJavaJars andxlsxjars` 所做的事情。不幸的是,我无法创建几行类似的 R 行。例如:

inputStream <- .jnew("java/io/FileInputStream", path.expand(file))

wbFactory <- .jnew("org/apache/poi/ss/usermodel/WorkbookFactory")

我从中得到的是,首先创建了一个输入流(我也可以为单词 fie 做到这一点)。apache poi library然后使用另一个 .jnew创建此工作簿工厂。寻找 word 的类似功能,我找到了 POI 包的这一部分并尝试了:

wdoc <- .jnew("org/apache/poi/hwpf/HWPFDocument")

我得到的只是一个java.lang.ClassNotFoundException. 除了 Excel 相关包之外的 POI 包应该可用,因为 poi-3.9-20121203.jar源代码中有xlsxjars一个包含 .jarxlsx依赖的包。

还尝试使用该软件包commonJavaJars并运行该功能

加载罐子(“poi”)

没有错误,但后续调用没有成功。有人可以让我从这里开始吗?

编辑:我显然在这里错过了一个包裹。我可以立即将其他内容加载jars到我的 R 会话中,还是必须编译一个包才能添加新的 jar?

4

1 回答 1

3

Apache POI 提供了 POI 组件、它们的 jar 和它们的依赖项的便捷页面。如果你看一下,你会发现要使用 HWPF,你需要poi jarpoi-scratchpad jar

因此,假设您坚持使用 poi-3.9(而不是使用最新版本,截至撰写时为 3.10 beta 2),您需要在类路径中列出poi-3.9-20121203.jarpoi-scratchpad-3.9-20121203.jar。一旦两者都在那里,您应该可以使用 HWPF

由于您使用的是 R,如果您决定使用CommonJavaJars 库,您应该参考R loadJars 文档,了解有关如何一次性加载所有需要的 jar 的详细信息。

或者,如果您想跳过 CommonJavaJars 并手动完成所有操作,则以下代码段显示如何从 R 的 Word 文档中提取文本。注意 - 这并不漂亮,因为 R Java 接口显然是低级的。 .

library(rJava)
.jinit()
.jaddClassPath("poi-3.10-beta3-20131022.jar")
.jaddClassPath("poi-scratchpad-3.10-beta3-20131022.jar")

inputStream <- .jnew("java/io/FileInputStream", path.expand("test.doc"))
wdoc <- .jnew("org/apache/poi/hwpf/HWPFDocument", 
              .jcast(inputStream,"java/io/InputStream"))
wext <- .jnew("org/apache/poi/hwpf/extractor/WordExtractor", wdoc)

text <- .jcall(wext, "Ljava/lang/String;", "getText")
print(text)

如果您想使用 Apache POI 的其他组件,请务必查看组件页面以查看它们的任何依赖项(有些比其他组件更多)

于 2013-10-22T08:46:54.697 回答