【问题标题】:Write dates to excel sheet as date format with custom styles using openxlsx使用 openxlsx 将日期作为日期格式以自定义样式写入 Excel 工作表
【发布时间】:2021-09-09 09:31:22
【问题描述】:

我的excel表格写代码如下:

wb <- createWorkbook("wb_Object1")

addWorksheet(wb, "Report_MicronV1", gridLines = TRUE)

writeData(wb, sheet = "Report_MicronV1", Report_Micron, rowNames = FALSE)

setColWidths(wb, "Report_MicronV1", cols = 1:length(Report_Micron[1,]), widths = 15)

headerS <- createStyle(
           fontSize = 12,
           textDecoration = "bold",
           fontColour = "#0F0E0E",
           halign = "left",
           valign = "center",
           fgFill = "#FCF707",
           border = "TopBottom",
           borderColour = "#22FC07",
           borderStyle = "thick",
           wrapText = TRUE)

bodyS <-  createStyle(
          fontSize = 9,
          textDecoration = "bold",
          fontColour = "#0F0E0E",
          halign = "left",
          border = "TopBottom",
          borderColour = "#d7dcde")

 addStyle(wb, sheet = 1, headerS, rows = 1, cols = 1:length(Report_Micron[1,]), gridExpand = 
          TRUE)

 addStyle(wb, sheet = 1, bodyS, rows = 2:nrow(Report_Micron), cols = 
          1:length(Report_Micron[1,]), gridExpand = TRUE)

 saveWorkbook(wb, "Report_MicronV1.xlsx", overwrite = TRUE)

预期输出为“mm/dd/yyyy”

但是 R 是这样写的(参考屏幕打印)

请帮忙

R 编写的 excel 表格的屏幕打印:

【问题讨论】:

    标签: r openxlsx


    【解决方案1】:

    问题是添加样式时会覆盖日期格式。要解决此问题,请先添加样式,然后将数据写入工作簿:

    改编自openxlsx的默认示例:

    library(openxlsx)
    
    dates <- data.frame("d1" = Sys.Date() - 0:4)
    for(i in 1:3) dates <- cbind(dates, dates)
    names(dates) <- paste0("d", 1:8)
    dates$d1 <- "Text"
    dates$d2 <- 1:5
    
    ## Date Formatting
    wb <- createWorkbook()
    
    addWorksheet(wb, "Date Formatting", gridLines = FALSE)
    
    setColWidths(wb, 1, cols = 1:length(dates[1,]), widths = 15)
    
    headerS <- createStyle(
      fontSize = 12,
      textDecoration = "bold",
      fontColour = "#0F0E0E",
      halign = "left",
      valign = "center",
      fgFill = "#FCF707",
      border = "TopBottom",
      borderColour = "#22FC07",
      borderStyle = "thick",
      wrapText = TRUE)
    
    bodyS <-  createStyle(
      fontSize = 9,
      textDecoration = "bold",
      fontColour = "#0F0E0E",
      halign = "left",
      border = "TopBottom",
      borderColour = "#d7dcde")
    
    addStyle(wb, sheet = 1, headerS, rows = 1, cols = 1:length(dates[1,]), gridExpand = 
               TRUE)
    
    addStyle(wb, sheet = 1, bodyS, rows = 2:(nrow(dates) + 1), cols = 
               1:length(dates[1,]), gridExpand = TRUE)
    
    writeData(wb, 1, dates) ## write without styling
    
    saveWorkbook(wb, "date.xlsx", overwrite = TRUE)
    

    【讨论】:

    • 这是否意味着 - 我应该将日期分成不同的数据框,然后 CBIND ??
    • 我的数据框中包含所有类型的数据 - 日期、文本、数字等。这是否意味着 - 我应该将日期列分隔到不同的数据框中,然后 CBIND ??
    • 没有。我刚刚进行了编辑以添加包含文本和数字数据的列。我的回答只是意味着首先将样式添加到工作表中,然后再写入数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2022-01-12
    • 2023-03-31
    • 2020-02-26
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多