如何在保持R

时间:2017-08-20 11:37:05

标签: r excel

我有3个xlsx文件,每个7张。每天早上我都要删除每张表的内容,以准备导入新数据。

我想使用R自动执行该过程。我可以使用Excel宏执行此操作,但R脚本是我想要的(这样我不需要等待更长时间,因为启用宏的文件会慢一些)。

我只想在保留工作表名称和所有格式(我已将所有单元格格式化为文本,并且单元格具有特定宽度)的同时获取空白工作表。使用openxlsx包的解决方案更受欢迎。

编辑:

这些纸张包含大约15列,最多包含200行。仍然没有矢量化的解决方案有点慢。

2 个答案:

答案 0 :(得分: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)

但是,为什么不能只将空电子表格作为模板制作一次,然后在每次需要使用它时复制它?

答案 1 :(得分:1)

可以使用openxlsx的deleteData函数。

library(openxlsx)
wkbook <- loadWorkbook(file = "test.xlsx")
deleteData(wkbook , sheet = 1,cols = 1:100, rows = 1:100000, gridExpand = TRUE)

删除使用后,您可以使用 WriteData 函数将数据插入/追加到现有文件。在这里,我正在清除行到 100000 和列到 100。您可以识别工作簿的最后一行和最后一列并相应地删除。