使用.xlsx文件作为Shiny App中的输入

时间:2017-08-11 17:18:30

标签: r excel shiny

我正在制作一个闪亮的应用程序,它需要一个带有多个工作表的Excel作为输入。它与xlsx库和read.xlsx函数配合得很好。但是,它返回以下错误:

java.lang.IllegalArgumentException: Cell index must be >= 0

我现在已切换到gdata和read.xls,但每次运行模型时都会出现文件路径错误。

我想知道是否有人之前处理过这个问题,是否有任何简单的解决方案来解决这个问题。

编辑:

以下代码

library(shiny)
library(xlsx)

ui <- fluidPage(
  fileInput("uploadFile", "XLSX file"),
  verbatimTextOutput("summary")
)

server <- function(input, output) ({

  dataset<-reactive({ 
    inFile <- input$uploadFile 
    dat<-read.xlsx(inFile$datapath, 1)
    return(dat)
  })

  output$summary <- renderText({summary(dataset())})

})

shinyApp(ui, server)

返回:

Error : package ‘rJava’ could not be loaded

如果我使用

library(shiny)
library(readxl)

ui <- fluidPage(
  fileInput("uploadFile", "XLSX file"),
  verbatimTextOutput("summary")
)

server <- function(input, output) ({

  dataset<-reactive({ 
    inFile <- input$uploadFile 
    dat<-read_excel(inFile$datapath, sheet =  1)
    return(dat)
  })

  output$summary <- renderText({summary(dataset())})

})

shinyApp(ui, server)

我明白了:

Error: Missing file extension.

1 个答案:

答案 0 :(得分:0)

我刚试过这个,它对我来说很好。

library(shiny)
library(readxl)

runApp(
    list(
        ui = fluidPage(
            titlePanel("Use readxl"),
            sidebarLayout(
                sidebarPanel(
                    fileInput('file1', 'Choose xlsx file',
                              accept = c(".xlsx")
                              )
                    ),
                mainPanel(
                    tableOutput('contents'))
                )
            ),
        server = function(input, output){
            output$contents <- renderTable({
                inFile <- input$file1

                if(is.null(inFile))
                    return(NULL)
                file.rename(inFile$datapath,
                          paste(inFile$datapath, ".xlsx", sep=""))
                read_excel(paste(inFile$datapath, ".xlsx", sep=""), 1)
            })
        }
        )
    )

另外,请看这个。

https://shiny.rstudio.com/gallery/file-upload.html