-->

是否setDataFormatForType()在所有的工作中XLConnect日期?(Does s

2019-10-18 23:23发布

我最近尝试在功能上各种格式参数

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

例如格式=如上所示,除了许多其他“d / M /日”。

这则跟进

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

然后我写了一个工作表,并保存workook。 格式扭捏的no形式似乎工作。 当我惹的setDataFormatForType命令任何格式的结果是数字时间值在Excel工作簿中的日期栏显示出来,我以后节省即对于2013年11月6日= 41584.如果我不干扰任何DataFormats那么标准(POSIX)格式会保存,但是当你在生成的Excel工作看,它有一些自定义“XLConnect格式”分配给它,所以它会显示“错误” :-( - 这意味着美国的符号(领先一个月后跟通过天),但我想要的是Eurepean(龙头天,随后为一个月)。

如果任何人有在XLConnect设置这些DataFormats(尤其是“日期”),然后分享一些想法和智慧一定的经验将高度赞赏。

谢谢,沃尔特

Answer 1:

有一个新的风格的动作XLC$"STYLE_ACTION.DATATYPE"在从GitHub上的XLConnect版本的https://github.com/miraisolutions/xlconnect 。 在“数据类型”风格的动作可以用于使用其可以使用被设定的特定小区的风格特定类型的风格细胞setCellStyleForType 。 请看下面的例子:

require(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 = data.frame(A = 1:10, B = Sys.time() + 1:10)
createSheet(wb, "data")
writeWorksheet(wb, data = data, sheet = "data")
saveWorkbook(wb)


Answer 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)


文章来源: Does setDataFormatForType() work at all for Dates in XLConnect?