This is the class used by openxlsx2 to modify workbooks from R.
You can load an existing workbook with wb_load() and create a new one with
wb_workbook().
After that, you can modify the wbWorkbook object through two primary methods:
Wrapper Function Method: Utilizes the wb family of functions that support
piping to streamline operations.
wb <- wb_workbook(creator = "My name here") %>%
wb_add_worksheet(sheet = "Expenditure", grid_lines = FALSE) %>%
wb_add_data(x = USPersonalExpenditure, row_names = TRUE)
Chaining Method: Directly modifies the object through a series of chained function calls.
wb <- wb_workbook(creator = "My name here")$
add_worksheet(sheet = "Expenditure", grid_lines = FALSE)$
add_data(x = USPersonalExpenditure, row_names = TRUE)
While wrapper functions require explicit assignment of their output to reflect changes, chained functions inherently modify the input object. Both approaches are equally supported, offering flexibility to suit user preferences. The documentation mainly highlights the use of wrapper functions.
# Import workbooks
path <- system.file("extdata/openxlsx2_example.xlsx", package = "openxlsx2")
wb <- wb_load(path)## or create one yourself
wb <- wb_workbook()
# add a worksheet
wb$add_worksheet("sheet")
# add some data
wb$add_data("sheet", cars)
# Add data with piping in a different location
wb <- wb %>% wb_add_data(x = cars, dims = wb_dims(from_col = "D", from_row = 4))
# open it in your default spreadsheet software
if (interactive()) wb$open()
Note that the documentation is more complete in each of the wrapper functions.
(i.e. ?wb_add_data rather than ?wbWorkbook).
sheet_namesThe names of the sheets
calcChaincalcChain
chartscharts
is_chartsheetA logical vector identifying if a sheet is a chartsheet.
customXmlcustomXml
connectionsconnections
ctrlPropsctrlProps
Content_TypesContent_Types
appapp
coreThe XML core
customcustom
drawingsdrawings
drawings_relsdrawings_rels
embeddingsembeddings
externalLinksexternalLinks
externalLinksRelsexternalLinksRels
headFootThe header and footer
mediamedia
metadatacontains cell/value metadata imported on load from xl/metadata.xml
personsPersons of the workbook. to be used with wb_add_thread()
pivotTablespivotTables
pivotTables.xml.relspivotTables.xml.rels
pivotDefinitionspivotDefinitions
pivotRecordspivotRecords
pivotDefinitionsRelspivotDefinitionsRels
queryTablesqueryTables
slicersslicers
slicerCachesslicerCaches
sharedStringssharedStrings
styles_mgrstyles_mgr
tablestables
tables.xml.relstables.xml.rels
themetheme
vbaProjectvbaProject
vmlvml
vml_relsvml_rels
commentsComments (notes) present in the workbook.
threadCommentsThreaded comments
workbookworkbook
workbook.xml.relsworkbook.xml.rels
worksheetsworksheets
worksheets_relsworksheets_rels
sheetOrderThe sheet order. Controls ordering for worksheets and worksheet names.
pathpath
new()Creates a new wbWorkbook object
wbWorkbook$new(
creator = NULL,
title = NULL,
subject = NULL,
category = NULL,
datetime_created = Sys.time(),
theme = NULL,
keywords = NULL,
comments = NULL,
manager = NULL,
company = NULL,
...
)creatorcharacter vector of creators. Duplicated are ignored.
title, subject, category, keywords, comments, manager, companyworkbook properties
datetime_createdThe datetime (as POSIXt) the workbook is
created. Defaults to the current Sys.time() when the workbook object
is created, not when the Excel files are saved.
themeOptional theme identified by string or number
...additional arguments
a wbWorkbook object
append()Append a field. This method is intended for internal use
wbWorkbook$append(field, value)fieldA valid field name
valueA value for the field
append_sheets()Append to self$workbook$sheets This method is intended for internal use
wbWorkbook$append_sheets(value)valueA value for self$workbook$sheets
validate_sheet()validate sheet
wbWorkbook$validate_sheet(sheet)sheetA character sheet name or integer location
The integer position of the sheet
add_chartsheet()Add a chart sheet to the workbook
wbWorkbook$add_chartsheet(
sheet = next_sheet(),
tab_color = NULL,
zoom = 100,
visible = c("true", "false", "hidden", "visible", "veryhidden"),
...
)sheetThe name of the sheet
tab_colortab_color
zoomzoom
visiblevisible
...additional arguments
The wbWorkbook object, invisibly
add_worksheet()Add worksheet to the wbWorkbook object
wbWorkbook$add_worksheet(
sheet = next_sheet(),
grid_lines = TRUE,
row_col_headers = TRUE,
tab_color = NULL,
zoom = 100,
header = NULL,
footer = NULL,
odd_header = header,
odd_footer = footer,
even_header = header,
even_footer = footer,
first_header = header,
first_footer = footer,
visible = c("true", "false", "hidden", "visible", "veryhidden"),
has_drawing = FALSE,
paper_size = getOption("openxlsx2.paperSize", default = 9),
orientation = getOption("openxlsx2.orientation", default = "portrait"),
hdpi = getOption("openxlsx2.hdpi", default = getOption("openxlsx2.dpi", default = 300)),
vdpi = getOption("openxlsx2.vdpi", default = getOption("openxlsx2.dpi", default = 300)),
...
)sheetThe name of the sheet
grid_linesgridLines
row_col_headersrowColHeaders
tab_colortabColor
zoomzoom
headerheader
footerfooter
odd_headeroddHeader
odd_footeroddFooter
even_headerevenHeader
even_footerevenFooter
first_headerfirstHeader
first_footerfirstFooter
visiblevisible
has_drawinghasDrawing
paper_sizepaperSize
orientationorientation
hdpihdpi
vdpivdpi
...additional arguments
The wbWorkbook object, invisibly
clone_worksheet()Clone a workbooksheet to another workbook
wbWorkbook$clone_worksheet(
old = current_sheet(),
new = next_sheet(),
from = NULL
)oldname of worksheet to clone
newname of new worksheet to add
fromname of new worksheet to add
add_data()add data
wbWorkbook$add_data(
sheet = current_sheet(),
x,
dims = wb_dims(start_row, start_col),
start_col = 1,
start_row = 1,
array = FALSE,
col_names = TRUE,
row_names = FALSE,
with_filter = FALSE,
name = NULL,
sep = ", ",
apply_cell_style = TRUE,
remove_cell_style = FALSE,
na.strings = na_strings(),
inline_strings = TRUE,
...
)sheetThe name of the sheet
xx
dimsCell range in a sheet
start_colstartCol
start_rowstartRow
arrayarray
col_namescolNames
row_namesrowNames
with_filterwithFilter
namename
sepsep
apply_cell_styleapplyCellStyle
remove_cell_styleif writing into existing cells, should the cell style be removed?
na.stringsValue used for replacing NA values from x. Default
na_strings() uses the special #N/A value within the workbook.
inline_stringswrite characters as inline strings
...additional arguments
returnThe wbWorkbook object
add_data_table()add a data table
wbWorkbook$add_data_table(
sheet = current_sheet(),
x,
dims = wb_dims(start_row, start_col),
start_col = 1,
start_row = 1,
col_names = TRUE,
row_names = FALSE,
table_style = "TableStyleLight9",
table_name = NULL,
with_filter = TRUE,
sep = ", ",
first_column = FALSE,
last_column = FALSE,
banded_rows = TRUE,
banded_cols = FALSE,
apply_cell_style = TRUE,
remove_cell_style = FALSE,
na.strings = na_strings(),
inline_strings = TRUE,
...
)sheetThe name of the sheet
xx
dimsCell range in a sheet
start_colstartCol
start_rowstartRow
col_namescolNames
row_namesrowNames
table_styletableStyle
table_nametableName
with_filterwithFilter
sepsep
first_columnfirstColumn
last_columnlastColumn
banded_rowsbandedRows
banded_colsbandedCols
apply_cell_styleapplyCellStyle
remove_cell_styleif writing into existing cells, should the cell style be removed?
na.stringsValue used for replacing NA values from x. Default
na_strings() uses the special #N/A value within the workbook.
inline_stringswrite characters as inline strings
...additional arguments
The wbWorkbook object
add_pivot_table()add pivot table
wbWorkbook$add_pivot_table(
x,
sheet = next_sheet(),
dims = "A3",
filter,
rows,
cols,
data,
fun,
params,
pivot_table,
slicer
)xa wb_data object
sheetThe name of the sheet
dimsthe worksheet cell where the pivot table is placed
filtera character object with names used to filter
rowsa character object with names used as rows
colsa character object with names used as cols
dataa character object with names used as data
funa character object of functions to be used with the data
paramsa list of parameters to modify pivot table creation
pivot_tablea character object with a name for the pivot table
slicera character object with names used as slicer
fun can be either of AVERAGE, COUNT, COUNTA, MAX, MIN, PRODUCT, STDEV,
STDEVP, SUM, VAR, VARP
The wbWorkbook object
add_slicer()add pivot table
wbWorkbook$add_slicer(
x,
dims = "A1",
sheet = current_sheet(),
pivot_table,
slicer,
params
)xa wb_data object
dimsthe worksheet cell where the pivot table is placed
sheetThe name of the sheet
pivot_tablethe name of a pivot table on the selected sheet
slicera variable used as slicer for the pivot table
paramsa list of parameters to modify pivot table creation
The wbWorkbook object
add_formula()Add formula
wbWorkbook$add_formula(
sheet = current_sheet(),
x,
dims = wb_dims(start_row, start_col),
start_col = 1,
start_row = 1,
array = FALSE,
cm = FALSE,
apply_cell_style = TRUE,
remove_cell_style = FALSE,
...
)sheetThe name of the sheet
xx
dimsCell range in a sheet
start_colstartCol
start_rowstartRow
arrayarray
cmcm
apply_cell_styleapplyCellStyle
remove_cell_styleif writing into existing cells, should the cell style be removed?
...additional arguments
The wbWorkbook object
add_style()add style
wbWorkbook$add_style(style = NULL, style_name = NULL)stylestyle
style_namestyle_name
The wbWorkbook object
to_df()to_df
wbWorkbook$to_df(
sheet,
start_row = 1,
start_col = NULL,
row_names = FALSE,
col_names = TRUE,
skip_empty_rows = FALSE,
skip_empty_cols = FALSE,
skip_hidden_rows = FALSE,
skip_hidden_cols = FALSE,
rows = NULL,
cols = NULL,
detect_dates = TRUE,
na.strings = "#N/A",
na.numbers = NA,
fill_merged_cells = FALSE,
dims,
show_formula = FALSE,
convert = TRUE,
types,
named_region,
keep_attributes = FALSE,
...
)sheetEither sheet name or index. When missing the first sheet in the workbook is selected.
start_rowfirst row to begin looking for data.
start_colfirst column to begin looking for data.
row_namesIf TRUE, the first col of data will be used as row names.
col_namesIf TRUE, the first row of data will be used as column names.
skip_empty_rowsIf TRUE, empty rows are skipped.
skip_empty_colsIf TRUE, empty columns are skipped.
skip_hidden_rowsIf TRUE, hidden rows are skipped.
skip_hidden_colsIf TRUE, hidden columns are skipped.
rowsA numeric vector specifying which rows in the Excel file to read. If NULL, all rows are read.
colsA numeric vector specifying which columns in the Excel file to read. If NULL, all columns are read.
detect_datesIf TRUE, attempt to recognize dates and perform conversion.
na.stringsA character vector of strings which are to be interpreted as NA. Blank cells will be returned as NA.
na.numbersA numeric vector of digits which are to be interpreted as NA. Blank cells will be returned as NA.
fill_merged_cellsIf TRUE, the value in a merged cell is given to all cells within the merge.
dimsCharacter string of type "A1:B2" as optional dimensions to be imported.
show_formulaIf TRUE, the underlying Excel formulas are shown.
convertIf TRUE, a conversion to dates and numerics is attempted.
typesA named numeric indicating, the type of the data. 0: character, 1: numeric, 2: date, 3: posixt, 4:logical. Names must match the returned data
named_regionCharacter string with a named_region (defined name or table). If no sheet is selected, the first appearance will be selected.
keep_attributesIf TRUE additional attributes are returned. (These are used internally to define a cell type.)
...additional arguments
a data frame
filefile
sheetThe name of the sheet
data_onlydata_only
...additional arguments
The wbWorkbook object invisibly
save()Save the workbook
wbWorkbook$save(file = self$path, overwrite = TRUE, path = NULL)fileThe path to save the workbook to
overwriteIf FALSE, will not overwrite when path exists
pathDeprecated argument previously used for file. Please use file in new code.
The wbWorkbook object invisibly
interactiveIf FALSE will throw a warning and not open the path.
This can be manually set to TRUE, otherwise when NA (default) uses
the value returned from base::interactive()
minor helper wrapping xl_open which does the entire same thing
The wbWorkbook, invisibly
buildTable()Build table
wbWorkbook$buildTable(
sheet = current_sheet(),
colNames,
ref,
showColNames,
tableStyle,
tableName,
withFilter,
totalsRowCount = 0,
showFirstColumn = 0,
showLastColumn = 0,
showRowStripes = 1,
showColumnStripes = 0
)sheetThe name of the sheet
colNamescolNames
refref
showColNamesshowColNames
tableStyletableStyle
tableNametableName
withFilterwithFilter
totalsRowCounttotalsRowCount
showFirstColumnshowFirstColumn
showLastColumnshowLastColumn
showRowStripesshowRowStripes
showColumnStripesshowColumnStripes
The wbWorksheet object, invisibly
update_table()update a data_table
wbWorkbook$update_table(sheet = current_sheet(), dims = "A1", tabname)sheetThe name of the sheet
dimsCell range in a sheet
tabnamea tablename
The wbWorksheet object, invisibly
copy_cells()copy cells around in a workbook
wbWorkbook$copy_cells(
sheet = current_sheet(),
dims = "A1",
data,
as_value = FALSE,
as_ref = FALSE,
transpose = FALSE,
...
)sheetThe name of the sheet
dimsCell range in a sheet
dataa wb_data object
as_valueshould a copy of the value be written
as_refshould references to the cell be written
transposeshould the data be written transposed
...additional arguments passed to add_data() if used with as_value
The wbWorksheet object, invisibly
get_base_font()Get the base font
wbWorkbook$get_base_font()A list of of the font
set_base_font()Set the base font
wbWorkbook$set_base_font(
font_size = 11,
font_color = wb_color(theme = "1"),
font_name = "Aptos Narrow",
...
)font_sizefontSize
font_colorfont_color
font_namefont_name
...additional arguments
The wbWorkbook object
get_base_colors()Get the base color
wbWorkbook$get_base_colors(xml = FALSE, plot = TRUE)xmlxml
plotplot
get_base_colours()Get the base colour
wbWorkbook$get_base_colours(xml = FALSE, plot = TRUE)xmlxml
plotplot
set_base_colors()Set the base color
wbWorkbook$set_base_colors(theme = "Office", ...)themetheme
......
The wbWorkbook object
set_base_colours()Set the base colour
wbWorkbook$set_base_colours(theme = "Office", ...)themetheme
......
The wbWorkbook object
set_bookview()Set the book views
wbWorkbook$set_bookview(
active_tab = NULL,
auto_filter_date_grouping = NULL,
first_sheet = NULL,
minimized = NULL,
show_horizontal_scroll = NULL,
show_sheet_tabs = NULL,
show_vertical_scroll = NULL,
tab_ratio = NULL,
visibility = NULL,
window_height = NULL,
window_width = NULL,
x_window = NULL,
y_window = NULL,
...
)active_tabactiveTab
auto_filter_date_groupingautoFilterDateGrouping
first_sheetfirstSheet
minimizedminimized
show_horizontal_scrollshowHorizontalScroll
show_sheet_tabsshowSheetTabs
show_vertical_scrollshowVerticalScroll
tab_ratiotabRatio
visibilityvisibility
window_heightwindowHeight
window_widthwindowWidth
x_windowxWindow
y_windowyWindow
...additional arguments
The wbWorkbook object
get_sheet_names()Get sheet names
wbWorkbook$get_sheet_names(escape = FALSE)escapeLogical if the xml special characters are escaped
A named character vector of sheet names in their order. The
names represent the original value of the worksheet prior to any
character substitutions.
set_sheet_names()Sets a sheet name
wbWorkbook$set_sheet_names(old = NULL, new)oldOld sheet name
newNew sheet name
The wbWorkbook object, invisibly
set_row_heights()Sets a row height for a sheet
wbWorkbook$set_row_heights(
sheet = current_sheet(),
rows,
heights = NULL,
hidden = FALSE
)sheetThe name of the sheet
rowsrows
heightsheights
hiddenhidden
The wbWorkbook object, invisibly
remove_row_heights()Removes a row height for a sheet
wbWorkbook$remove_row_heights(sheet = current_sheet(), rows)sheetThe name of the sheet
rowsrows
The wbWorkbook object, invisibly
createCols()creates column object for worksheet
wbWorkbook$createCols(sheet = current_sheet(), n, beg, end)sheetThe name of the sheet
nn
begbeg
endend
group_cols()Group cols
wbWorkbook$group_cols(
sheet = current_sheet(),
cols,
collapsed = FALSE,
levels = NULL
)sheetThe name of the sheet
colscols
collapsedcollapsed
levelslevels
The wbWorkbook object, invisibly
ungroup_cols()ungroup cols
wbWorkbook$ungroup_cols(sheet = current_sheet(), cols)sheetThe name of the sheet
colscolumns
The wbWorkbook object
remove_col_widths()Remove row heights from a worksheet
wbWorkbook$remove_col_widths(sheet = current_sheet(), cols)sheetA name or index of a worksheet
colsIndices of columns to remove custom width (if any) from.
The wbWorkbook object, invisibly
set_col_widths()Set column widths
wbWorkbook$set_col_widths(
sheet = current_sheet(),
cols,
widths = 8.43,
hidden = FALSE
)sheetThe name of the sheet
colscols
widthsWidth of columns
hiddenA logical vector to determine which cols are hidden; values
are repeated across length of cols
The wbWorkbook object, invisibly
group_rows()Group rows
wbWorkbook$group_rows(
sheet = current_sheet(),
rows,
collapsed = FALSE,
levels = NULL
)sheetThe name of the sheet
rowsrows
collapsedcollapsed
levelslevels
The wbWorkbook object, invisibly
ungroup_rows()ungroup rows
wbWorkbook$ungroup_rows(sheet = current_sheet(), rows)sheetThe name of the sheet
rowsrows
The wbWorkbook object
remove_worksheet()Remove a worksheet
wbWorkbook$remove_worksheet(sheet = current_sheet())sheetThe worksheet to delete
The wbWorkbook object, invisibly
add_data_validation()Adds data validation
wbWorkbook$add_data_validation(
sheet = current_sheet(),
dims = "A1",
type,
operator,
value,
allow_blank = TRUE,
show_input_msg = TRUE,
show_error_msg = TRUE,
error_style = NULL,
error_title = NULL,
error = NULL,
prompt_title = NULL,
prompt = NULL,
...
)sheetThe name of the sheet
dimsCell range in a sheet
typetype
operatoroperator
valuevalue
allow_blankallowBlank
show_input_msgshowInputMsg
show_error_msgshowErrorMsg
error_styleThe icon shown and the options how to deal with such inputs. Default "stop" (cancel), else "information" (prompt popup) or "warning" (prompt accept or change input)
error_titleThe error title
errorThe error text
prompt_titleThe prompt title
promptThe prompt text
...additional arguments
The wbWorkbook object
merge_cells()Set cell merging for a sheet
wbWorkbook$merge_cells(
sheet = current_sheet(),
dims = NULL,
solve = FALSE,
...
)sheetThe name of the sheet
dimsCell range in a sheet
solvelogical if intersecting cells should be solved
...additional arguments
The wbWorkbook object, invisibly
unmerge_cells()Removes cell merging for a sheet
wbWorkbook$unmerge_cells(sheet = current_sheet(), dims = NULL, ...)sheetThe name of the sheet
dimsCell range in a sheet
...additional arguments
The wbWorkbook object, invisibly
freeze_pane()Set freeze panes for a sheet
wbWorkbook$freeze_pane(
sheet = current_sheet(),
first_active_row = NULL,
first_active_col = NULL,
first_row = FALSE,
first_col = FALSE,
...
)sheetThe name of the sheet
first_active_rowfirst_active_row
first_active_colfirst_active_col
first_rowfirst_row
first_colfirst_col
...additional arguments
The wbWorkbook object, invisibly
add_comment()Add comment
wbWorkbook$add_comment(sheet = current_sheet(), dims = "A1", comment, ...)sheetThe name of the sheet
dimsrow and column as spreadsheet dimension, e.g. "A1"
commenta comment to apply to the worksheet
...additional arguments
The wbWorkbook object
remove_comment()Remove comment
wbWorkbook$remove_comment(sheet = current_sheet(), dims = "A1", ...)sheetThe name of the sheet
dimsrow and column as spreadsheet dimension, e.g. "A1"
...additional arguments
The wbWorkbook object
add_thread()add threaded comment to worksheet
wbWorkbook$add_thread(
sheet = current_sheet(),
dims = "A1",
comment = NULL,
person_id,
reply = FALSE,
resolve = FALSE
)sheetThe name of the sheet
dimsCell range in a sheet
commentthe comment to add
person_idthe person Id this should be added for
replylogical if the comment is a reply
resolvelogical if the comment should be marked as resolved
add_conditional_formatting()Add conditional formatting
wbWorkbook$add_conditional_formatting(
sheet = current_sheet(),
dims = NULL,
rule = NULL,
style = NULL,
type = c("expression", "colorScale", "dataBar", "iconSet", "duplicatedValues",
"uniqueValues", "containsErrors", "notContainsErrors", "containsBlanks",
"notContainsBlanks", "containsText", "notContainsText", "beginsWith", "endsWith",
"between", "topN", "bottomN"),
params = list(showValue = TRUE, gradient = TRUE, border = TRUE, percent = FALSE, rank =
5L),
...
)sheetThe name of the sheet
dimsCell range in a sheet
rulerule
stylestyle
typetype
paramsAdditional parameters
...additional arguments
The wbWorkbook object
add_image()Insert an image into a sheet
wbWorkbook$add_image(
sheet = current_sheet(),
dims = "A1",
file,
width = 6,
height = 3,
row_offset = 0,
col_offset = 0,
units = "in",
dpi = 300,
...
)sheetThe name of the sheet
dimsCell range in a sheet
filefile
widthwidth
heightheight
row_offset, col_offsetoffsets
unitsunits
dpidpi
...additional arguments
The wbWorkbook object, invisibly
add_plot()Add plot. A wrapper for add_image()
wbWorkbook$add_plot(
sheet = current_sheet(),
dims = "A1",
width = 6,
height = 4,
row_offset = 0,
col_offset = 0,
file_type = "png",
units = "in",
dpi = 300,
...
)sheetThe name of the sheet
dimsCell range in a sheet
widthwidth
heightheight
row_offset, col_offsetoffsets
file_typefileType
unitsunits
dpidpi
...additional arguments
The wbWorkbook object
add_drawing()Add xml drawing
wbWorkbook$add_drawing(
sheet = current_sheet(),
dims = "A1",
xml,
col_offset = 0,
row_offset = 0,
...
)sheetThe name of the sheet
dimsCell range in a sheet
xmlxml
col_offset, row_offsetoffsets for column and row
...additional arguments
The wbWorkbook object
add_chart_xml()Add xml chart
wbWorkbook$add_chart_xml(
sheet = current_sheet(),
dims = NULL,
xml,
col_offset = 0,
row_offset = 0,
...
)sheetThe name of the sheet
dimsCell range in a sheet
xmlxml
col_offset, row_offsetpositioning parameters
...additional arguments
The wbWorkbook object
add_mschart()Add mschart chart to the workbook
wbWorkbook$add_mschart(
sheet = current_sheet(),
dims = NULL,