在R中的read.xlsx之前强制执行Excel工作簿?
我正在使用xlsx
包中的read.xlsx()
来读取Excel工作簿(.xlsx格式)。 我的工作簿将date存储为函数(例如, =DATE(1900, 1, 1)
1/1/1900
=DATE(1900, 1, 1)
),而不是从1/1/1900
至12 1
1/1/1900
日(例如1/1/1900
或1
)的string或小数天数。
如果工作簿曾被打开/评估过,这对read.xlsx
来说不是问题。 但是许多这些工作簿从来没有被打开/评估过(它们是由我的数据提供者生成的,而不是由Excel生成的)。 由于工作簿尚未打开/评估,因此它包含-1而不是自1899-12-31以来的实际小数天数(例如,2001年5月25日的37036)。 我在这里学到了 所以如果我在其中一个(从未打开的)工作簿中读取date,我会得到一列-1,其中read.xlsx
解释为read.xlsx
(即read.xlsx
之前的一天)。
这里有修复吗? 我可以touch
一个工作簿来强制评估吗? 有没有一点,我可以在read.xlsx
翻转read.xlsx
强制评估? 我只看到一个colClasses
参数,这似乎不是问题? 我可以避免使用Excel VBA脚本将这些工作簿写入文本吗? 对不起,我不能提供任何可重复的代码,但如果您打开一个Excel工作簿input=Date()
,问题将不存在。
使用XLConnect
包,您可以使用:
getForceFormulaRecalculation(object,sheet)
计算所有表单:
getForceFormulaRecalculation(wb, sheet = "*")