如何修复downloadHanler中的“ flextable中的错误:无效的col_keys,flextable仅支持语法名称”

时间:2018-10-24 14:10:38

标签: r shiny shiny-server shinydashboard

我的Shiny Server如下:

shinyServer(function(input, output){

  t1 <- reactive({
    tab1 <- data.table("Fields"=c("Contact Person",
                                        "Cost Center:",
                                        "Department:",
                                        "Date:"

                       "Detailed information" = c(input$`Contact Person`,
                                                  input$`Cost`,
                                                  input$`Department`,
                                                  format(input$`Date`[1])


    tab1

  })
        output$tbl1 <- renderTable({
    if (is.null(t1()))
      return(NULL)
    t1()
  })

output $ download1 = downloadHandler(

filename = function(){
  paste("InternalRequest_",Sys.Date(),".docx", sep ="")

},
content = function(file){

  ft <- flextable(t1())
  ft <- theme_vanilla(ft)

  doc = read_docx(path="B:\\Desktop\\Internal Request.docx")
  doc<-doc%>%cursor_bookmark("DATA")
  doc<-body_add_flextable(doc, ft, pos = "on")

  print(doc, file = file)
})
 })

下载不起作用,我收到消息“警告:flextable中的错误:无效的col_keys,flextable仅支持语法名称”。有人可以帮我解决问题吗?谢谢!

1 个答案:

答案 0 :(得分:1)

根据我的理解,我给出了建议。是的,在将您的反应性数据集传递到flextable之前,我们应该保留适当的名称。例如,在您的情况下,反应性数据集的名称包含空格(详细信息)。为了使用合适的名字,我使用了 janitor 包中的函数 clean_names()。使用以下代码

 library(janitor)
  t1() %>% 
   clean_names() %>%
   flextable() %>% 
   theme_vanilla() %>%
   set_header_labels(fields = "Fields",detailed_information = "Detailed information") -> ft

代替

ft <- flextable(t1())
ft <- theme_vanilla(ft)

在您的 downloadHandler

内部

谢谢。