使用XLConnect(R)错误将日期数据导出到.xlsx文件?

时间:2014-03-27 20:00:01

标签: r excel date xlconnect

更新2:产生问题的示例。

示例Excel文件:是一个空白的.xlsx,其工作表名称为Sheet1。 示例R代码:

library(chron)
library(rJava)
library(xlsxjars)
library(xlsx)
library(XLConnect)

setwd("C:/")

Day<-as.Date('2014-01-01')
Data<-as.data.frame(rep(Day,35))

name<-paste("Example.xls")
Master<-loadWorkbook(name, create=TRUE)
writeWorksheet(object=Master, data=Data,sheet="Sheet1", startRow=2, startCol=1,header=FALSE)
saveWorkbook(Master)

更新: &#34; 12/31/2013&#34;的数据框中的数值是16070.最后的日期是&#34; 3/25/2014&#34;价值16154。

这是预期的。但是,当我查看写在表格上的数字时,&#34; 12/31/2013&#34;是41638.75,应该是41639。&#34; 3/25/2014&#34;是41722.79,应该是41723.

我是否遗漏了R数据框如何解释整个日期? Java例程是否减去整数的某一部分?

ORIGINAL: 我试图将许多数据框导出到.xlsx文件的不同表。我的数据框仅在数据框中包含日期数据信息。 (即&#34; 2013-12-31&#34;

我使用以下代码将其导出到我的Excel文件。

Temp<-data
name<-paste("Master.xlsx") 
Master<-loadWorkbook(name, create=TRUE)
writeWorksheet(object=Master,data=Temp,sheet="Ft. Wayne",startRow = 2, startCol = 1,   header=FALSE)
saveWorkbook(Master)

当我打开.xlsx文件时,日期显示为:

12/30/2013 18:00:00

如何使用

格式导出

&#34; 12/31/2013&#34;

并维持&#34; date&#34;单元格编号格式化.xlsx文件?

仅供参考:如果我更改数据框中的格式,它将导出为&#34; general&#34;值。

2 个答案:

答案 0 :(得分:1)

此行为的原因是类Date的对象在内部转换为POSIXct,并假定为UTC午夜的日期。美国科技委员会是UTC - 6小时,这就是您体验抵消的原因。我建议你直接使用POSIXct。如果要在Excel中显示没有时间组件的日期,可以使用单元格样式和数据格式。

示例:

library(XLConnect)

data = data.frame(Day = rep(as.POSIXct('2014-01-01'), 35))

wb = loadWorkbook("example.xls", create = TRUE)

setStyleAction(wb, XLC$"STYLE_ACTION.DATATYPE")
cs = createCellStyle(wb, name = "myDateStyle")
setDataFormat(cs, format = "yyyy-mm-dd")
setCellStyleForType(wb, style = cs, type = XLC$"DATA_TYPE.DATETIME")

createSheet(wb, name = "test")
writeWorksheet(wb, data = data, sheet = "test", startRow = 2, startCol = 1, header = FALSE)

saveWorkbook(wb)

答案 1 :(得分:0)

我做的一件事是,可能对您有用的代码量明显减少,将日期列转换为字符,然后再将其导出到Excel。

我正在使用R中的数据并希望使用XLConnect包导出它,所以在导出数据框之前我所做的只是将日期列从日期格式更改为字符,并且在Excel中打开时看起来更清晰。

而不是在Excel中获取此内容: 12/30/2013 18:00:00

我得到:&#34; 12/31/2013&#34;