在模块中使用R Shining app下载powerpoint
我正在尝试为我们闪亮的应用程序开发一个功能,用户可以下载一个包含所有表格和图表的powerpoint。我确实看到了一个独立的应用程序,如果所有的表和图都在服务器组件中,我知道如何使用它。由于我们的代码库正在增加,并且我们正试图使用模块来破坏应用程序,因此我无法确定应该在哪里安装downloadhandler。如果我在服务器组件中有它,我如何将我的表格和绘图从模块传递到服务器中的这个函数。下面是独立下载到powerpoint代码的代码在模块中使用R Shining app下载powerpoint,r,shiny,R,Shiny,我正在尝试为我们闪亮的应用程序开发一个功能,用户可以下载一个包含所有表格和图表的powerpoint。我确实看到了一个独立的应用程序,如果所有的表和图都在服务器组件中,我知道如何使用它。由于我们的代码库正在增加,并且我们正试图使用模块来破坏应用程序,因此我无法确定应该在哪里安装downloadhandler。如果我在服务器组件中有它,我如何将我的表格和绘图从模块传递到服务器中的这个函数。下面是独立下载到powerpoint代码的代码 library(shiny) library(officer)
library(shiny)
library(officer)
library(flextable)
library(dplyr)
my_table <- data.frame(
Name = letters[1:4],
Age = seq(20, 26, 2),
Occupation = LETTERS[15:18],
Income = c(50000, 20000, 30000, 45000)
)
ui <- fluidRow(
column(
width = 12,
align = "center",
tableOutput("data"),
br(),
downloadButton("download_powerpoint", "Download Data to PowerPoint")
)
)
server <- function(input, output) {
output$data <- renderTable({
my_table
})
output$download_powerpoint <- downloadHandler(
filename = function() {
"employee_data.pptx"
},
content = function(file) {
flextable_prep <- flextable(my_table) %>%
colformat_num(col_keys = c("Age", "Income"), digits = 0) %>%
width(width = 1.25) %>%
height_all(height = 0.35) %>%
theme_zebra() %>%
align(align = "center", part = "all")
example_pp <- read_pptx() %>%
add_slide(layout = "Title Slide", master = "Office Theme") %>%
ph_with_text(
type = "ctrTitle",
str = "Employee Data"
) %>%
ph_with(
location = ph_location_type(type = "subTitle"),
value = "Company 2019 Report"
) %>%
add_slide(layout = "Title and Content", master = "Office Theme") %>%
ph_with_text(
type = "title",
str = "2019 Data"
) %>%
ph_with_flextable_at(
value = flextable_prep,
left = 2.5,
top = 2
)
print(example_pp, target = file)
}
)
}
shinyApp(ui, server)
库(闪亮)
图书馆(主任)
图书馆(flextable)
图书馆(dplyr)
我的桌子%
带文本的PHU(
type=“ctrTitle”,
str=“员工数据”
) %>%
博士(
位置=位置类型(type=“subTitle”),
value=“公司2019年报告”
) %>%
添加幻灯片(layout=“Title and Content”,master=“Office主题”)%>%
带文本的PHU(
type=“title”,
str=“2019年数据”
) %>%
ph_与_flextable_在(
值=flextable_prep,
左=2.5,
top=2
)
打印(示例,目标=文件)
}
)
}
shinyApp(用户界面、服务器)
有几种方法可以将数据从一个模块传递到另一个模块
例如,您可以从一个模块返回一个反应,并在另一个模块中使用它
请参阅(我在此处删除了powerpoint生成,以便将重点放在反应性的实现上):
库(闪亮)
图书馆(主任)
图书馆(flextable)
图书馆(dplyr)
showui您可以从模块返回并使用结果,也可以分配给会话用户数据,请参见此处:谢谢Colin。我过去常常把表格下载到powerpoint。我无法做到这一点,因为我在powerpoint中添加了情节丰富的情节。我不知道能不能做到。我可以从另一个新问题开始。由于plotly是交互式的,很难将其捕获为powerpoint。你可能想试试