我有一个数据表:例如
> aDT <- data.table(colA = "apple", colB = "banana", colC = "4")
> aDT
colA colB colC
1: apple banana 4
Run Code Online (Sandbox Code Playgroud)
我需要将此表写入 xlsm 中的工作表(它有宏)。
尝试了多种方法来连接到 xlsm。全部失败了。
# Method 1
require(XLConnect)
wb <- loadWorkbook(filename = "sample.xlsm", create = FALSE)
Error: OutOfMemoryError (Java): Java heap space
# Method 2
require(openxlsx)
wb <- loadWorkbook(xlsxFile = "sample.xlsm")
Error in grepl(target, commentsXML) : invalid 'pattern' argument
# Method 3
require(openxlsx)
wb <- loadWorkbook(file = "sample.xlsm")
Error in grepl(target, commentsXML) : invalid 'pattern' argument
Run Code Online (Sandbox Code Playgroud)
然后我尝试在另一个新的 xlsm 上使用相同的代码,它们起作用了。
我的“sample.xlsm”的一些问题(不确定它们与问题有何关系)
问题: 如何解决?或任何其他将数据写入 xlsm 的替代方法?
我还找到了其他一些帖子,但它们要么无法解决我的问题,要么已经过时了。提前致谢。
您的文件相当大,我可能会在 R 中进行更多分析并将更多现成数据导出到 Excel 或将数据加载到数据库中并将数据直接从数据库加载到 Excel 中。
也就是说,在方法 1 中,您需要在加载包之前指定为 rJava(XLConnect 所依赖的)提供多少内存。就这样:
options(java.parameters = "-Xmx22000m")
Run Code Online (Sandbox Code Playgroud)
您可能没有足够的可用内存,但这就是您收到此错误消息的原因。