R/file_manip.R

Defines functions write_csv_cols_det read_excel_allsheets write_excel_allsheets

#' @export
write_csv_cols_det <- function(df, cols_det, file){
  cols_app <- data.frame(colname=colnames(df)) %>%
    left_join(cols_det, by="colname")
  write.table(
    cols_app %>% t,
    file,
    row.names = FALSE,
    col.names = FALSE,
    append = FALSE,
    sep = ";",
    dec = ",",
    fileEncoding = "latin1",
    quote = FALSE
  )
  write.table(
    df,
    file,
    row.names = FALSE,
    col.names = FALSE,
    append = TRUE,
    sep = ";",
    dec = ",",
    fileEncoding = "latin1",
    quote = FALSE
  )
}




#' @export
read_excel_allsheets <- function(filename, tibble = FALSE) {
  sheets <- readxl::excel_sheets(filename)
  x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
  if(!tibble) x <- lapply(x, as.data.frame)
  names(x) <- sheets
  x
}


#' @export
write_excel_allsheets <- function(df_list, filename, tibble = FALSE, variables=NULL) {
  wb <- createWorkbook()
  startRow <- ifelse(is.null(variables), 1, 2)
  if (length(df_list) > 0) {
    for (i in 1:length(df_list)) {
      df <- df_list[[i]]
      sheetName <- names(df_list)[[i]]
      addWorksheet(wb = wb, sheetName = sheetName, gridLines = FALSE)
      if (!is.null(variables)) {
        vars <- variables %>%
          dplyr::filter(type == sheetName, db_name %in% colnames(df))
        df <- df[, vars$db_name]
        for (df_col in vars$db_name){
          var_row <- vars %>%
            dplyr::filter(db_name == df_col)
          if (!is.na(var_row$decimal)) {
            df[, df_col] <- round(df[, df_col], var_row$decimal)
          }
        }
        colnames(df) <- vars$name
        writeData(wb = wb, sheet = i, x = t(vars$unit), colNames = F)
      }
      writeDataTable(wb = wb, sheet = i, x = df, startRow = startRow)
      setColWidths(wb = wb, sheet = i, 1:ncol(df), widths = "auto")
    }
  }
  saveWorkbook(wb, filename, overwrite = TRUE)
}
vwrobel/dataexpr documentation built on Aug. 9, 2019, 8:44 a.m.