У вас есть несколько вопросов внутри вашего вопроса. Во-первых, давайте обратимся к кнопке загрузки и форматируемой таблице, которая не отображается на главной панели. Ваша кнопка загрузки не работает, потому что на стороне сервера вы определили фрейм данных bycompany
как функцию (bycompany()
), поэтому блестящий не распознает bycompany
как фрейм данных. Таким образом, чтобы ваша кнопка загрузки работала, измените (внутри table_input
функция) все bycompany()
на bycompany
.
Итак, ваш код выглядит следующим образом, и теперь кнопка загрузки работает:
library(openxlsx)
library(shiny)
library(formattable)
# I've also added dplyr for pipe operator
library(dplyr)
ui <- fluidPage(fluidRow(
sidebarPanel(
hr(style = "border-color: #606060;"),
# Add bullets
h3(HTML(paste0(
"<b>", "Download", "</b>"
))),
downloadButton(outputId = "table_dowload",
label = "Download"),
hr(style = "border-color: #606060;"),
width = 3
),
mainPanel(br(),
formattableOutput("info_company_table"),
br())
))
server <- function(input, output, session) {
## Visualization input
table_input <- function() {
bycompany <- structure(
list(
Parent = "Melissa",
Active = 12681L,
Claims = 16.22,
Strength = 24.15,
Backward = 6.37,
Forward = 1.09
),
row.names = 1L,
class = "data.frame"
)
# Visualize top 10
if (nrow(bycompany) > 0) {
t <- formattable(
bycompany %>%
arrange(desc(`Active`,)) %>%
slice(1:10),
align = "l",
list(
`Backward` = color_tile("white", "lightblue"),
`Forward` = color_tile("white", "lightblue"),
`Claims` = color_tile("white", "lightblue"),
`Strength` = color_tile("white", "lightblue"),
`Active` = color_tile("white", "lightblue")
)
)
} else {
t <- formattable(data.frame(t))
}
}
## Visualization
output$table <- renderFormattable({
table_input()
})
# DOWNLOAD
output$table_dowload <- downloadHandler(
filename <- function() {
paste("Table",
Sys.Date(),
"xlsx",
sep = ".")
},
content = function(file) {
write.xlsx(table_input(), file)
}
)
}
shinyApp(ui, server)
Также обратите внимание, что если вы хотите визуализировать форматируемый на вашей главной панели, вы должны изменить эту часть
## Visualization
output$table <- renderFormattable({
table_input()
})
На это, так как вы определили свою часть пользовательского интерфейса как formattableOutput("info_company_table")
## Visualization
output$info_company_table <- renderFormattable({
table_input()
})
Относительно форматируемого (т. Е. Формата экспортируемых данных Excel) я мог найти только эту ссылку (которая не приносит решения) https://github.com/renkun-ken/formattable/issues/70