在Shiny应用程序中读取read_excel中的特定工作表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Shiny应用程序中读取read_excel中的特定工作表相关的知识,希望对你有一定的参考价值。

我正在创建一个Shiny应用程序,它采用Excel文件并自动处理数据。我希望用户输入他们想要查看的特定Excel工作表的名称。我在UI中找不到使用textInput的方法,并在服务器中输入$ filesheet。我的代码可能有助于更好地理解这个问题:

UI

fileInput('file1', 'Insert File',
            accept = c(".xlsx"),
textInput('file1sheet','Name of Sheet (Case-Sensitive)')

服务器

inFile1 <- input$file1
sheetname1 <- input$file1sheet
df1 <- read_excel(inFile1$datapath,sheet = sheetname1)

问题是sheetname1似乎不起作用,因为read_excel不会将其识别为正确的表达式。我尝试了一些东西,包括ShQuote和as.character。如果有人有解决方案,这将是非常棒的!

谢谢!

斯特凡

答案

我试图了解你在寻找什么,我无法重现你的错误。但也许您可以查看以下代码以查看代码失败的位置。以下应用程序允许用户选择.xlsx文件,然后在显示相应的表之前检索工作表名称。

library(shiny)
library(readxl)

ui <- fluidPage(
  fileInput('file1', 'Insert File', accept = c(".xlsx")),
  textInput('file1sheet','Name of Sheet (Case-Sensitive)'),
  tableOutput("value")
)

server <- function(input, output) {

  sheets_name <- reactive({
    if (!is.null(input$file1)) {
      return(excel_sheets(path = input$file1$datapath))  
    } else {
      return(NULL)
    }
  })

  output$value <- renderTable({
    if (!is.null(input$file1) && 
        (input$file1sheet %in% sheets_name())) {
      return(read_excel(input$file1$datapath, 
                        sheet = input$file1sheet))
    } else {
      return(NULL)
    }
  })
}

shinyApp(ui, server)

以上是关于在Shiny应用程序中读取read_excel中的特定工作表的主要内容,如果未能解决你的问题,请参考以下文章

如何从多个文本框输入中读取字符串并将它们存储在 Shiny 中的向量中?

pandas中pd.read_excel()方法中的converters参数

在 R/Shiny 中获取本地文件数据

一个参数一个xlsx表,让你玩转Pandas中read_excel()表格读取!

Shiny App中的文件夹选择(本地和服务器上)以读取文件并保存结果

如何在 ui.R 中读取 TextInput,在 global.R 中使用此值处理查询并使用 Shiny 在 server.R 中显示