在Shiny App Server中编写Excel

时间:2018-04-11 09:28:48

标签: r shiny shiny-server xlconnect

我正在尝试使用服务器上的Shiny应用程序编写Excel文件。第一步是加载包,我使用readXL作为一个例子,因为(它的单行语法和b)没有异常的依赖(看着你的Java)。

首先,我的问题是在服务器上运行,它在我的Mac上运行,但不在任何外部服务器上运行。我尝试过Centos7,一个运行Ubuntu的EC2和一个运行基于Linux的Amazons Redhat的EC2。问题似乎是允许Shiny服务器访问(稍后会详细介绍)。

以下是一些示例代码。这里的.XLSX在我的工作目录中。 server.r

#library(openxlsx)
library(shiny)
library(readxl)
#library(abbyyR)
function(input, output) {

  a <- readxl::read_excel("test.xlsx")
  output$testXL <- renderTable(a)
}

ui.r

    fluidPage(

  titlePanel("Conditional panels"),

  column(4, tableOutput("testXL")
  )
)

在所有情况下,条件面板加载但不加载数据。如果我在R-Studio GUI中运行此应用程序并使用本地计算机(尝试全部三个)作为服务器启动它,我可以通过指定的IP和端口访问它(即下面可以在xxxx:5050上访问。

>runApp(host="0.0.0.0",port=5050)

然而,将此文件放在服务器文件中(我遵循标准设置 - / srv / shiny-server / AppName下的文件)服务器已断开连接。取出基于readXL的代码(包括加载库)可防止与服务器消息断开连接。

我尝试过openxlsx,XLSX和XLConnect,当包含library(packageName)时都失败了。本地目录已将RWX权限应用于所有用户。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

已解决 - 一些软件包正在写入一个文件夹(不确定为什么),该文件夹对本地用户和R用户有权限,但不对Shiny用户有效(这是通过Http访问应用程序的方式)。 使用'library()'查找软件包的安装文件,并在安装软件包时将其指定为libpath。根据您的设置,您可能还需要sudo chown / chgrp。