使用officeR生成word报表
我想使用shiny将一组日期和天数作为输入,计算这些天数之间的天数,然后在word文档中生成这些操作的输出。当我只使用R时,代码可以工作,但是当我尝试在shiny中运行它时,它失败了——因为没有生成文档 我现在的代码如下使用officeR生成word报表,r,shiny,officer,R,Shiny,Officer,我想使用shiny将一组日期和天数作为输入,计算这些天数之间的天数,然后在word文档中生成这些操作的输出。当我只使用R时,代码可以工作,但是当我尝试在shiny中运行它时,它失败了——因为没有生成文档 我现在的代码如下 ####Setup#### library(shiny) library(needs) library(tidyverse) library(lubridate) library(officer) library(ical) ####Genera
####Setup####
library(shiny)
library(needs)
library(tidyverse)
library(lubridate)
library(officer)
library(ical)
####Generate page####
ui <- fluidPage(
titlePanel("Shiny Example"),
sidebarLayout(
sidebarPanel(
#Input for Date Range
dateInput("date_begin", label = h3("Start Date"),
language= "de",
format = "dd-mm-yyyy"),
dateInput("date_end", label = h3("End Date"),
language= "de",
format = "dd-mm-yyyy"),
#Week Days
checkboxGroupInput("weekdays", label = h3("Weekdays"),
choices = list("Monday" = 2,
"Tuesday" = 3,
"Wednesday" = 4,
"Thursday" = 5,
"Friday" = 6,
"Saturday" = 7,
"Sunday" = 1), hr())
),
mainPanel(
textOutput("begin"),
verbatimTextOutput("Days"),
downloadButton('downloadData', 'download')
)
)
)
server <- function(input, output) {
####Calculations####
#Find all days between the dates
output$begin <- renderText({
paste("Days between",
input$date_begin, "and",
input$date_end, "statt")
})
output$downloadData <- downloadHandler(
filename = function(){"download.docx"},
content = function(file) {
###Generate Date Vector###
#Get Dates
myDates <-seq(from = input$date_begin, to = output$date_end, by = "days")
#Identify Date of Weekday
select.vec<-which(wday(myDates) %in% c(output$weekdays))
#Subset Data by Weekday
date.vec<-myDates[select.vec]
#Generate Number Vector
number.vec<-seq(1,length=length(date.vec))
#Generate Vector of Heading Names (German Format)
name.vec1<-paste("Day",number.vec,sep=" ")
###Generate File###
doc.full<-read_docx("")
#Write date in for loop
for (i in 1:length(date.vec)){
#Generate German output for date
temp.date<-paste(day(date.vec[i]),
month(date.vec[i]),
year(date.vec[i]),
sep=".")
doc.full<-doc.full %>%
body_add_par(value = name.vec1[i], style = "Sitzung") %>%
body_add_par(value = temp.date, style = "Datum")
}
#Write Output
doc.full%>%
print(target = file)
}
)
}
# Run the application
shinyApp(ui = ui, server = server)
#####设置####
图书馆(闪亮)
图书馆(需要)
图书馆(tidyverse)
图书馆(lubridate)
图书馆(主任)
图书馆(ical)
####生成页面####
ui有几个错误
#Get Dates
myDates <-seq(from = input$date_begin, to = output$date_end, by = "days")
#Identify Date of Weekday
select.vec<-which(wday(myDates) %in% c(output$weekdays))
不起作用,因为默认模板中没有样式Sitzung
和Datum
。就是这样-谢谢!
#Get Dates
myDates <-seq(from = input$date_begin, to = input$date_end, by = "days")
#Identify Date of Weekday
select.vec<-which(wday(myDates) %in% c(input$weekdays))
doc.full <- doc.full %>%
body_add_par(value = name.vec1[i], style = "Sitzung") %>%
body_add_par(value = temp.date, style = "Datum")