在R中的read.xlsx之前强制Excel工作簿评估?

时间:2014-01-09 11:55:00

标签: r excel r-xlsx

我正在使用read.xlsx()包中的xlsx阅读Excel工作簿(.xlsx格式)。我的工作簿将日期存储为函数(例如,=DATE(1900, 1, 1)),而不是1899-12-31之间的字符串或小数天(例如1/1/19001)。

如果已打开/评估工作簿,则read.xlsx不是问题。但是许多这些工作簿从未被打开/评估过(它们是由我的数据提供者生成的,而不是由Excel生成的)。由于工作簿尚未打开/评估,因此它包含-1而不是自1899-12-31以来的实际小数天数(例如,2001年5月25日的37036)。我学到了这个here。因此,如果我在其中一个(从未打开过的)工作簿中读取日期,我会得到-1的列,read.xlsx解释为1899-12-30(即1899-12-31之前的一天)。

这里有解决方法吗?我可以touch一本工作簿来强制评估吗?是否有一点我可以在read.xlsx翻转以强制进行评估?我只看到一个colClasses参数,这似乎不是问题?我可以避免使用Excel VBA脚本将这些工作簿写入文本吗?抱歉,我无法提供任何可重现的代码,但如果您打开Excel工作簿以输入=Date(),则问题将不存在。

1 个答案:

答案 0 :(得分:1)

使用XLConnect包,您可以使用:

getForceFormulaRecalculation(object,sheet)

计算所有工作表:

getForceFormulaRecalculation(wb, sheet = "*")