2017-08-20 4 views
0

3枚のxlsxファイルがそれぞれ7枚あります。毎朝、新しいデータのインポートを準備するために各シートの内容を削除する必要があります。フォーマットを維持したままXLSXファイルからデータを削除する方法

私はExcelマクロでこれを行うことができますが、Rスクリプトは私が望むものです(マクロの使用可能なファイルが遅くなるので、それ以上待つ必要はありません)。

シート名を保持しながら空白のシートを取得したいだけです。すべてのセルをテキストとしてフォーマットし、セルには特定の幅があります。 openxlsxパッケージを使用するソリューションがより高く評価されます。

編集:

シートには、約15列と最大200行が含まれています。まだベクトル化されていないソリューションは少し遅いです。

答えて

1

これはちょっとしたハックのようですが、使用中の各セルに空の文字列を書き込み、結果のブックを保存するだけです。

library(openxlsx) 
wb = loadWorkbook("Test.xlsx") 

for(ss in 1:length(wb$worksheets)) { 
    Rows = wb$worksheets[[ss]]$sheet_data$rows 
    Cols = wb$worksheets[[ss]]$sheet_data$cols 

    for(i in 1:length(Rows)) { 
     writeData(wb,ss,"", startCol = Cols[i], startRow = Rows[i]) 
    } 
} 
saveWorkbook(wb, "Test2.xlsx", overwrite = TRUE) 

しかし、なぜあなたは一度だけ、テンプレートとして空のスプレッドシートを作成し、そのコピーそれをあなたがそれを使用する必要があるたびに作ることができませんか?

+0

実際これは私がこのようにできるかどうかを試してみたいものです。今のところ痛みを軽減するには、テンプレートが良いアイデアかもしれません。 – Arani

+0

ところで、私は '' ''の代わりに '' NULL ''を各セルに書くと、実際には100-150倍の速さで実行されます! – Arani

+0

NULLについてのヒントをありがとう。私はそれを試してみましょう。 – G5W

関連する問題