12

パッケージxlsxバージョン:0.5.7 日付: 2014-08-01 を使用しています。R バージョン 3.0.1 (2013-05-16) -- 「グッド スポーツ」プラットフォーム: i386-w64-mingw32/i386 (32 ビット)。

少なくとも 2 枚のシート (A と B など) を含む xlsx ファイルがあります。A からデータを読み取り、編集して B に保存する必要があります。これは定期的に行う必要があります。

で A からデータを読み取ることができますread.xlsx。データ フレームを編集した後、同じ xlsx ファイルの既存のシート B に保存したいと考えています。

私はこの行で試します

write.xlsx(down, paste0(root,'/registration reports/registration complete_WK.xlsx'), sheet="data_final", col.names=T, row.names=F, append=T, showNA=F)

しかし、それは私にこのエラーを与えます:

Error in `.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", ` : 
  java.lang.IllegalArgumentException: The workbook already contains a sheet of this name

その既存のシートを複数回交換する必要があります。どうやってやるの?

4

2 に答える 2

24

新しいデータフレームを既存の Excel ファイルに保存する場合は、最初に xlsx ファイルをロードする必要があります。

wb <- loadWorkbook(file)

あなたが持っているシートは次のようになります:

sheets <- getSheets(wb)

シートを次のように簡単に削除および追加 (したがって置換) できます。

removeSheet(wb, sheetName="Sheet1")
yourSheet <- createSheet(wb, sheetName="Sheet1")

シートをデータフレームで埋めることができるよりも:

addDataFrame(yourDataFrame, yourSheet, <options>)
addDataFrame(anotherDataFrame, yourSheet, startRow=nrow(yourDataFrame)+2)

最後のステップは、ブック全体を .xlsx として保存することです。

saveWorkbook(wb, file)

ところで: xlsx-package のドキュメントは本当に良くて、そのような質問に役立ちます :) http://cran.r-project.org/web/packages/xlsx/xlsx.pdf

于 2015-02-17T12:49:18.297 に答える
0

コンピュータにインストールされている Java が xlsx ライブラリと互換性がない可能性があります。次のスレッドでは、同じパッケージに関する同様の問題について説明しています: ここにリンクの説明を入力してください

または、問題は、XLConnect などの別の Excel 関連パッケージによって解決される場合があります。この投稿を参照してください: ここにリンクの説明を入力してください

于 2016-09-01T21:10:42.537 に答える