通过 BERT 使用 Excel 脚本接口处理日期如何工作?
How does dates handling using Excel scripting interface via BERT work?
我无法理解日期的处理方式。
我知道 Excel 处理日期的方式与 R 不同。我可以通过 R 函数将日期作为数值读取。例如,在工作簿 sheet "Sheet1" 单元格 A1 中,我可以输入日期(例如 11Apr2018)作为数字 43201,任何日期格式,例如 4/11/2018 或 11-Apr-18 , 或格式化为文本。
在我的 functions.R 脚本中,我可以保存一个函数:
test_date1 <- function(x){
print(str(x))
return(x)
}
当我在 excel =R.test_date1(A1)
中调用此函数时,R 将其读取为数字变量。如果我在 A1:A2 中有一个日期范围并使用上面的函数,那么我会得到一个数字向量。我对此很满意,可以使用 as.Date(x, origin="1899-12-30", tz='UTC')
.
转换为 R 日期
现在,当我尝试在 BERT 中使用脚本时,我无法读取未格式化为值的日期。例如,如果单元格 A1 的格式为数字,我将执行以下脚本:
test_value <- EXCEL$Application$get_Sheets()$get_Item('Sheet1')$get_Range('A1')$get_Value()
我的 test_date1
变量保存一个数字,我可以再次转换为 R 日期。但是当 A1 在 excel 中被格式化为日期时,相同的脚本 returns 一个 NULL
值。
最终我希望能够参考 excel 中的范围并将时间序列用于 ggplot2 绘图和统计分析。但我在处理日期时遇到问题。
这其实是一个疏漏,BERT没有处理好。
当使用 COM 接口时,这是一个 DATE
类型(那只是 double
的别名,所以它仍然只是一个数字)。它将在即将发布的版本中得到修复。
我无法理解日期的处理方式。
我知道 Excel 处理日期的方式与 R 不同。我可以通过 R 函数将日期作为数值读取。例如,在工作簿 sheet "Sheet1" 单元格 A1 中,我可以输入日期(例如 11Apr2018)作为数字 43201,任何日期格式,例如 4/11/2018 或 11-Apr-18 , 或格式化为文本。
在我的 functions.R 脚本中,我可以保存一个函数:
test_date1 <- function(x){
print(str(x))
return(x)
}
当我在 excel =R.test_date1(A1)
中调用此函数时,R 将其读取为数字变量。如果我在 A1:A2 中有一个日期范围并使用上面的函数,那么我会得到一个数字向量。我对此很满意,可以使用 as.Date(x, origin="1899-12-30", tz='UTC')
.
现在,当我尝试在 BERT 中使用脚本时,我无法读取未格式化为值的日期。例如,如果单元格 A1 的格式为数字,我将执行以下脚本:
test_value <- EXCEL$Application$get_Sheets()$get_Item('Sheet1')$get_Range('A1')$get_Value()
我的 test_date1
变量保存一个数字,我可以再次转换为 R 日期。但是当 A1 在 excel 中被格式化为日期时,相同的脚本 returns 一个 NULL
值。
最终我希望能够参考 excel 中的范围并将时间序列用于 ggplot2 绘图和统计分析。但我在处理日期时遇到问题。
这其实是一个疏漏,BERT没有处理好。
当使用 COM 接口时,这是一个 DATE
类型(那只是 double
的别名,所以它仍然只是一个数字)。它将在即将发布的版本中得到修复。