Learn R Programming

openxlsx (version 4.0.0)

writeDataTable: Write to a worksheet as an Excel table

Description

Write to a worksheet and format as an Excel table

Usage

writeDataTable(wb, sheet, x, startCol = 1, startRow = 1, xy = NULL, colNames = TRUE, rowNames = FALSE, tableStyle = "TableStyleLight9", tableName = NULL, headerStyle = NULL, withFilter = TRUE, keepNA = FALSE, sep = ", ")

Arguments

wb
A Workbook object containing a worksheet.
sheet
The worksheet to write to. Can be the worksheet index or name.
x
A dataframe.
startCol
A vector specifiying the starting column to write df
startRow
A vector specifiying the starting row to write df
xy
An alternative to specifying startCol and startRow individually. A vector of the form c(startCol, startRow)
colNames
If TRUE, column names of x are written.
rowNames
If TRUE, row names of x are written.
tableStyle
Any excel table style name or "none" (see "formatting" vignette).
tableName
name of table in workbook. The table name must be unique.
headerStyle
Custom style to apply to column names.
withFilter
If TRUE, columns with have withFilters in the first row.
keepNA
If TRUE, NA values are converted to #N/A in Excel else NA cells will be empty.
sep
Only applies to list columns. The seperator used to collapse list columns to a character vector e.g. sapply(x$list_column, paste, collapse = sep).

Details

columns of x with class Date/POSIXt, currency, accounting, hyperlink, percentage are automatically styled as dates, currency, accounting, hyperlinks, percentages respectively.

See Also

addWorksheet

writeData

Examples

Run this code
## see package vignettes for further examples.

#####################################################################################
## Create Workbook object and add worksheets
wb <- createWorkbook()
addWorksheet(wb, "S1")
addWorksheet(wb, "S2")
addWorksheet(wb, "S3")


#####################################################################################
## -- write data.frame as an Excel table with column filters
## -- default table style is "TableStyleMedium2"

writeDataTable(wb, "S1", x = iris)

writeDataTable(wb, "S2", x = mtcars, xy = c("B", 3), rowNames = TRUE,
  tableStyle = "TableStyleLight9")

df <- data.frame("Date" = Sys.Date()-0:19,
                 "T" = TRUE, "F" = FALSE,
                 "Time" = Sys.time()-0:19*60*60,
                 "Cash" = paste("$",1:20), "Cash2" = 31:50,
                 "hLink" = "https://CRAN.R-project.org/", 
                 "Percentage" = seq(0, 1, length.out=20),
                 "TinyNumbers" = runif(20) / 1E9,  stringsAsFactors = FALSE)

## openxlsx will apply default Excel styling for these classes
class(df$Cash) <- "currency"
class(df$Cash2) <- "accounting"
class(df$hLink) <- "hyperlink"
class(df$Percentage) <- "percentage"
class(df$TinyNumbers) <- "scientific"

writeDataTable(wb, "S3", x = df, startRow = 4, rowNames = TRUE, tableStyle = "TableStyleMedium9")

#####################################################################################
## Additional Header Styling and remove column filters

writeDataTable(wb, sheet = 1, x = iris, startCol = 7, headerStyle = createStyle(textRotation = 45),
                 withFilter = FALSE)


##################################################################################### 
## Save workbook
## Open in excel without saving file: openXL(wb)

saveWorkbook(wb, "writeDataTableExample.xlsx", overwrite = TRUE)

Run the code above in your browser using DataLab