将数据写入xlsm文件的R代码

5
我可以帮您进行翻译。以下是关于it技术的内容:

我有一个数据表格,例如:

> aDT <- data.table(colA = "apple", colB = "banana", colC = "4")
> aDT
    colA   colB colC
1: apple banana    4

我需要将这个表格写入一个带有宏的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

我之后尝试在另一个新的xlsm文件中使用相同的代码,它们奏效了。

我的"sample.xlsm"存在以下一些问题(不确定它们是否与问题有关):

  1. 文件大小为20MB
  2. 即使使用Excel打开也需要1-2分钟的时间
  3. 我要覆盖的工作表被其他工作表中的公式引用
  4. 每次启动Excel都会弹出消息“..包含一个或多个链接...可能不安全。如果您信任这些链接,请更新...”
  5. 已经在消息栏上禁用了安全警报

问题:如何解决这些问题?还是有其他替代方案可以向xlsm写入数据吗?

我找到了一些其他的帖子,但它们要么对我的问题无效,要么过时了。提前致谢。


可能会更新并“断开链接”,因为这会增加文件的大小。 - Mox
1个回答

0

你的文件相当大,我可能会在R中进行更多的分析,并将更加成熟的数据导出到Excel,或者将数据加载到数据库中,然后直接从数据库中加载数据到Excel。

话虽如此,在你的方法1中,在加载包之前,你需要指定为rJava(XLConnect依赖于它)提供多少内存。如下所示:

options(java.parameters = "-Xmx22000m")

你可能没有足够的内存可用,这就是你收到此错误消息的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接