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. 依存する.jars を含むpoi-3.9-20121203.jarソース コードに があるため、Excel 関連パッケージ以外の POI パッケージを利用できるはずです 。xlsxjarsxlsx

また、パッケージを使用commonJavaJarsして機能を実行しようとしました

loadJars("ポイ")

エラーは発生しませんでしたが、後続の呼び出しでは成功しませんでした。誰かが私をここから始めさせてもらえますか?

編集:ここで明らかにパッケージが恋しいです。jarsR セッションにすぐに追加をロードできますか、それともパッケージをコンパイルして新しい jar を追加する必要がありますか?

4

1 に答える 1

3

Apache POI は、POI コンポーネント、その jar、および依存関係の便利なページを提供します。それを見ると、HWPF を使用するには、メインの poi jarpoi-scratchpad jar の両方が必要であることがわかります。

したがって、poi-3.9 を使い続ける (そして、執筆時点で 3.10 ベータ 2 である最新バージョンを使用しない) と仮定すると、クラスパスにpoi-3.9-20121203.jarおよびをリストする必要があります。poi-scratchpad-3.9-20121203.jar両方が揃ったら、HWPF を使用しても問題ないはずです

R を使用しているため、CommonJavaJars ライブラリを使用する場合は、必要なすべての jar を一度にロードする方法の詳細について、R の loadJars ドキュメントを参照する必要があります。

または、CommonJavaJars をスキップしてすべて手作業で行いたい場合は、次のスニペットに、R から Word ドキュメントからテキストを抽出する方法を示します。 .

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 に答える