Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从XLSX文件中删除数据,同时保持R格式_R_Excel - Fatal编程技术网

如何从XLSX文件中删除数据,同时保持R格式

如何从XLSX文件中删除数据,同时保持R格式,r,excel,R,Excel,我有3个xlsx文件,每个文件有7张纸。每天早上我都要删除每张工作表的内容,为导入新数据做准备 我想用R自动化这个过程。我可以用Excel宏来实现这一点,但我想要的是R脚本(这样我就不需要等待更长的时间,因为启用宏的文件要慢得多) 我只希望得到空白的工作表,同时保留工作表名称和所有格式(我已将所有单元格格式化为文本,并且单元格具有特定的宽度)。使用openxlsx包的解决方案更受欢迎 编辑: 图纸包含约15列,最多200行。非矢量化的解决方案仍然有点慢。这看起来有点像黑客,但您只需在使用的每个单

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

我想用R自动化这个过程。我可以用Excel宏来实现这一点,但我想要的是R脚本(这样我就不需要等待更长的时间,因为启用宏的文件要慢得多)

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

编辑:


图纸包含约15列,最多200行。非矢量化的解决方案仍然有点慢。

这看起来有点像黑客,但您只需在使用的每个单元格中写入一个空字符串,然后保存生成的工作簿

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)

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

这看起来有点像黑客,但您可以简单地将空字符串写入正在使用的每个单元格,然后保存生成的工作簿

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)

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

您可以使用openxlsx的deleteData功能

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

wkbook您可以使用openxlsx的deleteData函数

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

wkbook实际上这是我想试试看我是否可以这样做。现在,模板可能是减少痛苦的好主意。顺便说一句,我发现将
NULL
写入每个单元格而不是
实际上会将执行速度提高100-150倍!谢谢你提供的关于空的提示。我将尝试一下。我正在寻找矢量化您的解决方案,明天将尝试。就目前而言,它工作得很好。谢谢。如果它能为你节省一些时间或麻烦,我会很高兴的。实际上,我想看看我是否能这样做。现在,模板可能是减少痛苦的好主意。顺便说一句,我发现将
NULL
写入每个单元格而不是
实际上会将执行速度提高100-150倍!谢谢你提供的关于空的提示。我将尝试一下。我正在寻找矢量化您的解决方案,明天将尝试。就目前而言,它工作得很好。谢谢。如果能为您节省一些时间或麻烦,我会很高兴的。