我的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仅支持语法名称”。有人可以帮我解决问题吗?谢谢!
答案 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
内部谢谢。