我正在使用read.xlsx()
包中的xlsx
阅读Excel工作簿(.xlsx格式)。我的工作簿将日期存储为函数(例如,=DATE(1900, 1, 1)
),而不是1899-12-31之间的字符串或小数天(例如1/1/1900
或1
)。
如果已打开/评估工作簿,则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()
,则问题将不存在。
答案 0 :(得分:1)
使用XLConnect
包,您可以使用:
getForceFormulaRecalculation(object,sheet)
计算所有工作表:
getForceFormulaRecalculation(wb, sheet = "*")