我有3个xlsx文件,每个7张。每天早上我都要删除每张表的内容,以准备导入新数据。
我想使用R自动执行该过程。我可以使用Excel宏执行此操作,但R脚本是我想要的(这样我不需要等待更长时间,因为启用宏的文件会慢一些)。
我只想在保留工作表名称和所有格式(我已将所有单元格格式化为文本,并且单元格具有特定宽度)的同时获取空白工作表。使用openxlsx
包的解决方案更受欢迎。
编辑:
这些纸张包含大约15列,最多包含200行。仍然没有矢量化的解决方案有点慢。
答案 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。您可以识别工作簿的最后一行和最后一列并相应地删除。