2012-03-30 19 views
4

ここに私が使用したコードがあります。Rのxlsxパッケージを使用してxlsファイルに式を渡す

library(xlsx) 
wb <- loadWorkbook('D:/test.xls') 
sheets <- getSheets(wb) 
sheet <- sheets[['my_sheet']] 

addDataFrame(x = ds, sheet = sheet, row.names = FALSE, col.names = FALSE, startRow=3, startColumn=1) 

cell.1 <- createCell(rows[1], colIndex=34)[[1,1]] 
setCellValue(cell.1, "=A32*B33") 
saveWorkbook(wb, 'D:/test.xls') 

問題なくデータフレームを追加できました。しかし、xlsファイルを開くときには、セルA34のtext "= A32 * B33"が見えました(式が機能するには、追加のEnterキーを押す必要があります)。数式を正しく入力するのを手伝ってもらえますか?

+0

F9を押すだけでシートを開くことができますか?私は通常このようなことをrcomを介して行います。この種のものをより詳細に制御できます。 – Hansi

+0

私はF9の代替品を試しましたが、うまくいかなかったようです。 – gvrocha

答えて

6

私は過去にパッケージxlsxを使用していましたが、大きな期待にもかかわらず、機能と使いやすさに重大な欠点がありました。 1分前にパッケージマニュアルを検索したとき、あなたがしたいことをすることができないようです。

代替品がパッケージXLConnectの形で存在します。 XLConnectは、Apache POIプロジェクトの同じJavaコード(xlsx)を使用しているため、オペレーティングシステム間の相互運用性は依然として高いです。

XLConnectには、必要な機能を果たす機能があります。setCellFormula()

参考文献:http://cran.r-project.org/web/packages/XLConnect/vignettes/XLConnect.pdf


PS:

+0

R1C1参照スタイルを使用して式を渡すにはどうすればいいか、私はそれが好きだと言います。私が与えた公式は "RC [-27] *(RC [-1] + RC [-3] + RC [-5])"でしたし、エラー:FormulaParseException(Java):指定された名前の範囲 'RC'現在のワークブックには存在しません。 –

+0

+1 xlsxよりもXLConnectの方がはるかに運が良かったです。 – joran

-1

もう1つの代替方法は、xlsの代わりにcsvファイルを出力し、Excelで開くことです。

関連する問題