1

我最近在函数上尝试了各种格式参数

setDataFormatForType(wb, type=XLC$DATA_TYPE.DATETIME, format="d/m/yy")

例如上面显示的 format="d/m/yy",还有很多其他的。

紧随其后的是

setStyleAction(wb, XLC$"STYLE_ACTION.DATA_FORMAT_ONLY")

然后我写一个工作表并保存工作表。似乎没有任何形式的格式调整有效。一旦我弄乱了 setDataFormatForType 命令中的任何格式,结果就是数字时间值显示在我稍后保存的 Excel 工作簿的日期列中,即 2013 年 11 月 6 日 = 41584。如果我不干涉任何 DataFormats 然后标准(POSIX)格式都会被保存,但是当您在生成的 Excel 中查看它时,它分配了一些自定义“XLConnect 格式”,因此它显示为“错误”:-( - 这意味着美国符号(前导月份跟随按天),但我想要的是欧洲(领先的日子,然后是月份)。

如果有人对在 XLConnect 中设置这些数据格式(尤其是“日期”)有一些经验,那么我们将不胜感激分享一些想法或智慧。

谢谢,沃尔特

4

2 回答 2

4

XLC$"STYLE_ACTION.DATATYPE"XLConnect 版本中有一个新样式的操作,可从 github 获取,网址为https://github.com/miraisolutions/xlconnect。“数据类型”样式操作可用于使用特定单元格样式设置特定类型的单元格样式,该样式可使用setCellStyleForType. 请参见以下示例:

需要(XLConnect)
wb = loadWorkbook("test.xlsx", create = TRUE)
setStyleAction(wb, XLC$"STYLE_ACTION.DATATYPE")
cs = createCellStyle(wb, name = "mystyle")
setDataFormat(cs, format = "d/m/yy")
setCellStyleForType(wb, style = cs, type = XLC$"DATA_TYPE.DATETIME")
数据 = data.frame(A = 1:10, B = Sys.time() + 1:10)
createSheet(wb,“数据”)
writeWorksheet(wb,数据=数据,工作表=“数据”)
保存工作簿(wb)
于 2013-11-13T22:00:11.043 回答
2

您确实需要有一个名为“日期”的命名区域。我保存了带有这样一个区域的 template2.xslx 文件的副本。format.Date对我有用的唯一想法是用函数写出来:

Dates=seq(from=as.Date("2001-01-01"), to=as.Date("2013-01-01"), by=365)
file.copy(system.file("demoFiles/template2.xlsx", 
                      package = "XLConnect"),
          "dataformat.xlsx", overwrite = TRUE)
wb <- loadWorkbook("dataformat.xlsx")
setDataFormatForType(wb, type = XLC$"DATA_TYPE.DATETIME", 
                     format = "dd/mm/yyyy")
setStyleAction(wb, XLC$"STYLE_ACTION.DATA_FORMAT_ONLY")
createName(wb, name = "Dates", formula = "mtcars!$A$1")
writeNamedRegion(wb, format(Dates, "%d.%m.%Y"), name = "Dates")
saveWorkbook(wb)
于 2013-11-08T22:12:48.717 回答