Auto-switching tabs

https://groups.google.com/forum/#!topic/shiny-discuss/Zmp1bkqTfB0

library(shiny)

################################################################################
# functions
# change #tabset in var tabs to match tabsetPanel id
# change 3000 to any other milisecond value
################################################################################

# switches every 3 seconds
tab_script <- "var tab_switch = setInterval(function() {
                 var tabs = $('#tabset li'),
                 active = tabs.filter('.active'),
                 next = active.next('li'),
                 toClick = next.length ? next.find('a') : tabs.eq(0).find('a');
                 toClick.trigger('click');
                 }, 3000);"

################################################################################
# ui
################################################################################

ui <- fluidPage(h1("Auto-Switching Tabs", align = "center"),
                tabsetPanel(id = "tabset",
                            tabPanel("Tab 1", h1("1")),
                            tabPanel("Tab 2", h1("2")),
                            tabPanel("Tab 3", h1("3"))),
                tags$script(HTML(tab_script)))

################################################################################
# server
################################################################################

server <- function(input, output) {

}

################################################################################
# run app
################################################################################

shinyApp(ui, server)


Downloading excel files

library(shiny)
library(openxlsx)

################################################################################
# functions
################################################################################

sysdate <- Sys.Date()
sysdate <- format(sysdate, format = "%m-%d-%Y")

file_name <- paste("data", sysdate, sep = "-")

################################################################################
# ui
################################################################################

ui <- shinyUI(navbarPage("Downloading Excel Files with openxlsx",
                         tabPanel("Data w/ Tablestyle", 
                                  downloadButton("download_1", "Download")),
                         tabPanel("Data w/o Tablestyle", 
                                  downloadButton("download_2", "Download"))
                         ))

################################################################################
# server
################################################################################

server <- function(input, output, session) {

session$allowReconnect(TRUE)

################################################################################
# data
################################################################################

df_1 <- data.frame(column_1 = c("1", "2", "3"),
                   column_2 = c("a", "b", "c"))

df_2 <- data.frame(column_1 = c("4", "5", "6"),
                   column_2 = c("d", "e", "f"))

################################################################################
# output
################################################################################

output$download_1 <- 
  downloadHandler(filename = paste(file_name, "xlsx", sep = "."),
                  content = function(download_file) {
  
                    # R creates a temp file but requires a ".xlsx" extension
                    temp <- tempfile(fileext = ".xlsx")
  
                    # creates base workbook
                    workbook <- createWorkbook()
  
                    # adds sheets
                    addWorksheet(wb = workbook, sheetName = "sheet_01")
                    addWorksheet(wb = workbook, sheetName = "sheet_02")
  
                    # writes data as a table, with table syles
                    writeDataTable(wb = workbook, 
                                   sheet = "sheet_01", 
                                   x = df_1, 
                                   tableStyle = "TableStyleMedium2")
                    writeDataTable(wb = workbook, 
                                   sheet = "sheet_02", 
                                   x = df_2, 
                                   tableStyle = "TableStyleMedium2")
  
                    # auto-fit column widths for each sheet
                    setColWidths(wb = workbook, 
                                 sheet = "sheet_01", 
                                 cols = 1:ncol(df_1), 
                                 widths = "auto")
                    setColWidths(wb = workbook, 
                                 sheet = "sheet_02", 
                                 cols = 1:ncol(df_2), 
                                 widths = "auto")
  
                    # saves all changes to workbook
                    saveWorkbook(wb = workbook, 
                                 file = download_file, 
                                 overwrite = TRUE)
  
                    # rewrites temp file as file to be downloaded
                    file.rename(temp, download_file)
                  })

# a simpler alternative to the previous method, but no table styles
output$download_2 <- 
  downloadHandler(filename = paste(file_name, "xlsx", sep = "."),
                  content = function(download_file) {
                    temp <- tempfile(fileext = ".xlsx")
  
                    write.xlsx(x = list(df_1, df_2),
                               file = temp,
                               asTable = TRUE,
                               colWidths = "auto",
                               sheetName = c("sheet_01", "sheet_02"))
  
                    file.rename(temp, download_file)
                  })

}

################################################################################
# run app
################################################################################

shinyApp(ui, server)