2016-11-27 9 views
0

SOや他の場所で検索した後、私は決定的な答えを見つけることができません。私がこれについて疑問に思う最初の人ではないと確信しているので、あなたのうちの一人が私を啓発できることを願っています。R/python - Excelブックのダイナミック版(セルの数式)

私はいくつかのセル(SUMなど)で簡単な数式を持つxlsxブックを持っています。

さんが言ってみましょう:

A1 = 10 
A2 = 20 
A3 = A1+A2 (so basically A3=30 to start with) 

Iは、例えば、(千回のように)A1の値を変更するスクリプトを実行し、STATの目的のために、A3の値を保存する必要があります。理想的には、これはWebサーバー上で行う必要があります。

今のところ、私はいくつかのセルを編集し、私はXLSXファイルをインポートすることができますR、中XLconnectライブラリを使用しています、そして、彼らがする必要がどこ式が自動的に適用されます(私が変更した場合A1の値を読み取り、A3を読み込むと、変更が考慮されます)。

XLconnectの唯一の問題は、私がよく理解していれば、Javaの依存関係のために実際には遅いということです。セルを書き、別のセルを読み込むのには時間がかかりすぎるので、何千もの時間を費やすことは苦しいかもしれません。 たとえば、「通常の」ブックの10回の反復には約10秒かかります。私は計算を並列化することができましたが、JVMに依存している場合は並列化が不可能であると読んでいます。

私が試した他のライブラリや他の言語(R/openxlsx、R/XLSX、R/xlsReadWrite、パイソン/ openpyxl)、およびそれらのどれも動的にセルを更新するように見えます。 A1の値を更新すると、A3の読みは30のままです。あるいは、私はそれらを間違って使っています。

そこで、私の質問: は、細胞間の依存関係を維持しながら、Excelファイルをインポートすることを可能にする言語/ライブラリがあり、それは、Javaに依存しませんか?
プロセスを高速化する方法です(たとえば、JVMを1回だけ呼び出すなど、セルを読み書きするのではなく)。

+1

なぜExcelが必要ですか? Python/Rで計算を行うだけではどうですか? –

+0

Excelを必要としないことは夢であろう。残念ながら、私は別の人からExcelワークブックでスクリプトを実行する必要があります。彼らはすでにあらゆる種類の有用な目的のためにExcelを使用しています。私は彼らにデータの書式を違うように頼むことはできません。 – jav

+0

すべての計算をRおよび/またはPythonで行い、書式設定されたExcelワークブックで最終結果を出力します。もちろん、Excel VBAを使うことができます.Excel VBAはデフォルトでExcelオブジェクトライブラリに接続します(もちろんRとPythonはCOM経由でも接続できます)。 – Parfait

答えて

0

のJavaは、JavaやPythonの2つのレルムをメルドするためのJythonを使用することができ

<dependency> 
     <groupId>net.sourceforge.jexcelapi</groupId> 
     <artifactId>jxl</artifactId> 
     <version>2.6.10</version> 
    </dependency> 

非常に優れたExcelのライブラリを持っています。

+0

あなたの答えはDavidにありがとうございます。残念ながら、私が見るところでは、JXLはxlsxファイルをサポートしていません。人々が自分のワークシートのフォーマットをxlsにすることは期待できないので、唯一の方法はxlsxをxlsxに変換することです(これは簡単に可能です)。 – jav

+0

xlsxはxmlであるオープンドキュメント形式を使用しています.xmltodictで簡単にPythonでxmlを読むことができます –

関連する問題