1

更新 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)

更新:“2013 年 12 月 31 日”数据框中的数值为 16070。最后日期为“2014 年 3 月 25 日”,值为 16154。

这是意料之中的。但是,当我查看写入工作表的数字时,“12/31/2013”​​是 41638.75,应该是 41639。“3/25/2014”是 41722.79,应该是 41723。

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

原文:我正在尝试将许多数据帧导出到 .xlsx 文件的不同工作表中。我的数据框在数据框中仅包含日期数据信息。(即“2013-12-31”

我使用以下代码将其导出到我的 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 文件时,日期如下:

2013 年 12 月 30 日 18:00:00

如何使用格式导出

“2013 年 12 月 31 日”

并维护格式化.xlsx文件的“日期”单元格编号?

仅供参考:如果我更改数据框中的格式,它将导出为“一般”值。

4

2 回答 2

4

这种行为的原因是类的对象在Date内部被转换为POSIXct并被假定为表示 UTC 午夜的日期。美国 CST 是 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)
于 2014-03-30T15:41:49.117 回答
0

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

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

而不是在 Excel 中得到这个:12/30/2013 18:00:00

我得到:“2013 年 12 月 31 日”

于 2015-05-28T20:35:34.963 回答