我正在尝试为练习编写一个Shiny应用程序 该应用程序采用Excel工作表,从Excel工作表中获取ID编号,并针对数据库运行这些ID,从数据库返回一些其他详细信息
就本例而言,我已导入数据并计算数据集中的行数。然后我将此数据集传递给函数get_DW
,它将返回一个数据帧,我想计算返回的数据帧中的记录数。当用户按下按钮Go
当我运行我的闪亮应用程序时,会计算数据导入和记录数。我还设法让它从数据库中返回记录并计算这些记录。
我无法使用output$downloadData
导出它们,没有任何反应。我按下按钮获取保存的对话框,但是当我输入文件名并按保存时,没有任何内容保存到文件夹
任何人都可以在代码中看到我可能出错的地方。我已经看到问题Downloading Excel File from XLConnect with R Shiny,但它没有使用我想要的库,我不太清楚给出的解释
我已更新以下代码以使用虹膜数据集。它有点乱,但它复制了缺少保存
服务器代码
# Server Code
server <- shinyServer(function(input, output) {
# Create a reactive expression which will grab the data
# We pass that to the outputs reactive element to the outputs
data <- reactive({
iris
})
# Return the number of records
output$Inputnum <- renderText({
paste(nrow(data()), "records to be checked")
})
# Data returned by Database
en_data <- eventReactive(input$go, {
get_DW(data())
})
# Return the number of records
output$Outputnum <- renderText({
paste(nrow(en_data()), "records matched")
})
output$downloadData<- downloadHandler(
filename = function() { "name.xlsx" },
content = function(file) {
tempFile <- tempfile(fileext = ".xlsx")
write.xlsx(en_data(), tempFile)
file.rename(tempFile, file)
})
})
用户界面代码
shinyUI(
fluidPage(
titlePanel("POC"),
sidebarLayout(
sidebarPanel(
fileInput(inputId = 'file1',label = 'Choose An Excel File',
accept=c('.xlxs')),
radioButtons(inputId = "radio", label = "Search By:",
choices = list("option 1" = 1,
"option 2" = 2,
"option 3" = 3),
selected = 1),
hr(),
fluidRow(column(1,
actionButton("go", "Get Records")),
column(2,offset = 2,
downloadButton('downloadData', 'Download')),
br()
)),
mainPanel(
verbatimTextOutput("Inputnum"),
br(),
verbatimTextOutput("Outputnum")
)
)
))
GLOBAL R FILE
#in global.R
options (scipen=FALSE,stringsAsFactors=FALSE)
library(xlsx)
library(RODBC)
library(dplyr)
get_DW <- function (mydf) {
mydf
}