【发布时间】:2018-03-07 10:30:28
【问题描述】:
我正在开发一个 Shiny 应用程序,该应用程序接受一个 Excel 文档,更改其结构和格式,并返回一个包含 10 个独特工作表的新 Excel 文档(基于美国地区)。我编写的代码在更改数据方面很好,但它不返回 Excel 文件。相反,它只是返回一个空白文件。如果有人知道如何回答这个问题,那就太棒了。这是我的代码,删节后只包含一些数据操作(这样更容易理解)。
让我知道这是否有意义!
GDrive 上的 Excel 文档链接:https://drive.google.com/file/d/1OHaYh0OcMDTbU5BhrL81EO7d5pgwfJju/view?usp=sharing
用户界面:
library(shiny)
library(xlsx)
library(dplyr)library(shinythemes)
shinyUI(fluidPage(theme = shinytheme("spacelab"),
titlePanel("Dataset Manipulation Example"),
tags$caption("Edited by S. Gouyet 2.21.2018"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Insert File',
accept = c(".xlsx")
),
downloadButton("downloadData", "Download updated Excel document")
)
,
mainPanel(
)
)
)
)
服务器:
shinyServer(function(input, output) {
reacdata<-reactive({
inFile1 <- input$file1
if(is.null(inFile1))
return(NULL)
df <- read_excel(inFile1$datapath)
df <- df %>% select(`SALES REGION`, `Price`)
Northeast1 <- df %>% filter(`SALES REGION` == "Northeast 1")
Northeast2 <- df %>% filter(`SALES REGION` == "Northeast 2")
CapMetro <- df %>% filter(`SALES REGION` == "Cap-Metro")
Southern <- df %>% filter(`SALES REGION` == "Southern")
Eastern <- df %>% filter(`SALES REGION` == "Eastern")
GreatLakes <- df %>% filter(`SALES REGION` == "Great Lakes")
Western <- df %>% filter(`SALES REGION` == "Western")
Pacific <- df %>% filter(`SALES REGION` == "Pacific")
wb <- createWorkbook()
sheet <- createSheet(wb, sheetName="addDataFrame1")
addDataFrame(df, sheet)
sheet <- createSheet(wb, sheetName="Northeast1")
addDataFrame(Northeast1, sheet)
sheet <- createSheet(wb, sheetName = "Northeast 2")
addDataFrame(Northeast2, sheet)
sheet <- createSheet(wb, sheetName = "Cap-Metro")
addDataFrame(Northeast2, sheet)
sheet <- createSheet(wb, sheetName = "Southern")
addDataFrame(Southern, sheet)
sheet <- createSheet(wb, sheetName = "Eastern")
addDataFrame(Southern, sheet)
sheet <- createSheet(wb, sheetName = "Great Lakes")
addDataFrame(GreatLakes, sheet)
sheet <- createSheet(wb, sheetName = "Western")
addDataFrame(Western, sheet)
sheet <- createSheet(wb, sheetName = "Pacific")
addDataFrame(Pacific, sheet)
})
output$downloadData <- downloadHandler(
filename ="test.xlsx",
content = function(file) {
saveWorkbook(wb, file)
}
)
})
【问题讨论】:
-
你会添加一个示例数据集吗?一些选项见this answer
-
抱歉,已经更新了。