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_names
The names of the sheets
calcChain
calcChain
charts
charts
is_chartsheet
A logical vector identifying if a sheet is a chartsheet.
customXml
customXml
connections
connections
ctrlProps
ctrlProps
Content_Types
Content_Types
app
app
core
The XML core
custom
custom
drawings
drawings
drawings_rels
drawings_rels
embeddings
embeddings
externalLinks
externalLinks
externalLinksRels
externalLinksRels
headFoot
The header and footer
media
media
metadata
contains cell/value metadata imported on load from xl/metadata.xml
persons
Persons of the workbook. to be used with wb_add_thread()
pivotTables
pivotTables
pivotTables.xml.rels
pivotTables.xml.rels
pivotDefinitions
pivotDefinitions
pivotRecords
pivotRecords
pivotDefinitionsRels
pivotDefinitionsRels
queryTables
queryTables
slicers
slicers
slicerCaches
slicerCaches
sharedStrings
sharedStrings
styles_mgr
styles_mgr
tables
tables
tables.xml.rels
tables.xml.rels
theme
theme
vbaProject
vbaProject
vml
vml
vml_rels
vml_rels
comments
Comments (notes) present in the workbook.
threadComments
Threaded comments
workbook
workbook
workbook.xml.rels
workbook.xml.rels
worksheets
worksheets
worksheets_rels
worksheets_rels
sheetOrder
The sheet order. Controls ordering for worksheets and worksheet names.
path
path
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,
...
)
creator
character vector of creators. Duplicated are ignored.
title, subject, category, keywords, comments, manager, company
workbook properties
datetime_created
The 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.
theme
Optional 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)
field
A valid field name
value
A value for the field
append_sheets()
Append to self$workbook$sheets
This method is intended for internal use
wbWorkbook$append_sheets(value)
value
A value for self$workbook$sheets
validate_sheet()
validate sheet
wbWorkbook$validate_sheet(sheet)
sheet
A 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"),
...
)
sheet
The name of the sheet
tab_color
tab_color
zoom
zoom
visible
visible
...
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)),
...
)
sheet
The name of the sheet
grid_lines
gridLines
row_col_headers
rowColHeaders
tab_color
tabColor
zoom
zoom
header
header
footer
footer
odd_header
oddHeader
odd_footer
oddFooter
even_header
evenHeader
even_footer
evenFooter
first_header
firstHeader
first_footer
firstFooter
visible
visible
has_drawing
hasDrawing
paper_size
paperSize
orientation
orientation
hdpi
hdpi
vdpi
vdpi
...
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
)
old
name of worksheet to clone
new
name of new worksheet to add
from
name 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,
...
)
sheet
The name of the sheet
x
x
dims
Cell range in a sheet
start_col
startCol
start_row
startRow
array
array
col_names
colNames
row_names
rowNames
with_filter
withFilter
name
name
sep
sep
apply_cell_style
applyCellStyle
remove_cell_style
if writing into existing cells, should the cell style be removed?
na.strings
Value used for replacing NA
values from x
. Default
na_strings()
uses the special #N/A
value within the workbook.
inline_strings
write characters as inline strings
...
additional arguments
return
The 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,
...
)
sheet
The name of the sheet
x
x
dims
Cell range in a sheet
start_col
startCol
start_row
startRow
col_names
colNames
row_names
rowNames
table_style
tableStyle
table_name
tableName
with_filter
withFilter
sep
sep
first_column
firstColumn
last_column
lastColumn
banded_rows
bandedRows
banded_cols
bandedCols
apply_cell_style
applyCellStyle
remove_cell_style
if writing into existing cells, should the cell style be removed?
na.strings
Value used for replacing NA
values from x
. Default
na_strings()
uses the special #N/A
value within the workbook.
inline_strings
write 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
)
x
a wb_data object
sheet
The name of the sheet
dims
the worksheet cell where the pivot table is placed
filter
a character object with names used to filter
rows
a character object with names used as rows
cols
a character object with names used as cols
data
a character object with names used as data
fun
a character object of functions to be used with the data
params
a list of parameters to modify pivot table creation
pivot_table
a character object with a name for the pivot table
slicer
a 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
)
x
a wb_data object
dims
the worksheet cell where the pivot table is placed
sheet
The name of the sheet
pivot_table
the name of a pivot table on the selected sheet
slicer
a variable used as slicer for the pivot table
params
a 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,
...
)
sheet
The name of the sheet
x
x
dims
Cell range in a sheet
start_col
startCol
start_row
startRow
array
array
cm
cm
apply_cell_style
applyCellStyle
remove_cell_style
if 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)
style
style
style_name
style_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,
...
)
sheet
Either sheet name or index. When missing the first sheet in the workbook is selected.
start_row
first row to begin looking for data.
start_col
first column to begin looking for data.
row_names
If TRUE, the first col of data will be used as row names.
col_names
If TRUE, the first row of data will be used as column names.
skip_empty_rows
If TRUE, empty rows are skipped.
skip_empty_cols
If TRUE, empty columns are skipped.
skip_hidden_rows
If TRUE, hidden rows are skipped.
skip_hidden_cols
If TRUE, hidden columns are skipped.
rows
A numeric vector specifying which rows in the Excel file to read. If NULL, all rows are read.
cols
A numeric vector specifying which columns in the Excel file to read. If NULL, all columns are read.
detect_dates
If TRUE, attempt to recognize dates and perform conversion.
na.strings
A character vector of strings which are to be interpreted as NA. Blank cells will be returned as NA.
na.numbers
A numeric vector of digits which are to be interpreted as NA. Blank cells will be returned as NA.
fill_merged_cells
If TRUE, the value in a merged cell is given to all cells within the merge.
dims
Character string of type "A1:B2" as optional dimensions to be imported.
show_formula
If TRUE, the underlying Excel formulas are shown.
convert
If TRUE, a conversion to dates and numerics is attempted.
types
A 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_region
Character string with a named_region (defined name or table). If no sheet is selected, the first appearance will be selected.
keep_attributes
If TRUE additional attributes are returned. (These are used internally to define a cell type.)
...
additional arguments
a data frame
file
file
sheet
The name of the sheet
data_only
data_only
...
additional arguments
The wbWorkbook
object invisibly
save()
Save the workbook
wbWorkbook$save(file = self$path, overwrite = TRUE, path = NULL)
file
The path to save the workbook to
overwrite
If FALSE
, will not overwrite when path
exists
path
Deprecated argument previously used for file. Please use file in new code.
The wbWorkbook
object invisibly
interactive
If 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
)
sheet
The name of the sheet
colNames
colNames
ref
ref
showColNames
showColNames
tableStyle
tableStyle
tableName
tableName
withFilter
withFilter
totalsRowCount
totalsRowCount
showFirstColumn
showFirstColumn
showLastColumn
showLastColumn
showRowStripes
showRowStripes
showColumnStripes
showColumnStripes
The wbWorksheet
object, invisibly
update_table()
update a data_table
wbWorkbook$update_table(sheet = current_sheet(), dims = "A1", tabname)
sheet
The name of the sheet
dims
Cell range in a sheet
tabname
a 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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
data
a wb_data object
as_value
should a copy of the value be written
as_ref
should references to the cell be written
transpose
should 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_size
fontSize
font_color
font_color
font_name
font_name
...
additional arguments
The wbWorkbook
object
get_base_colors()
Get the base color
wbWorkbook$get_base_colors(xml = FALSE, plot = TRUE)
xml
xml
plot
plot
get_base_colours()
Get the base colour
wbWorkbook$get_base_colours(xml = FALSE, plot = TRUE)
xml
xml
plot
plot
set_base_colors()
Set the base color
wbWorkbook$set_base_colors(theme = "Office", ...)
theme
theme
...
...
The wbWorkbook
object
set_base_colours()
Set the base colour
wbWorkbook$set_base_colours(theme = "Office", ...)
theme
theme
...
...
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_tab
activeTab
auto_filter_date_grouping
autoFilterDateGrouping
first_sheet
firstSheet
minimized
minimized
show_horizontal_scroll
showHorizontalScroll
show_sheet_tabs
showSheetTabs
show_vertical_scroll
showVerticalScroll
tab_ratio
tabRatio
visibility
visibility
window_height
windowHeight
window_width
windowWidth
x_window
xWindow
y_window
yWindow
...
additional arguments
The wbWorkbook
object
get_sheet_names()
Get sheet names
wbWorkbook$get_sheet_names(escape = FALSE)
escape
Logical 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)
old
Old sheet name
new
New 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
)
sheet
The name of the sheet
rows
rows
heights
heights
hidden
hidden
The wbWorkbook
object, invisibly
remove_row_heights()
Removes a row height for a sheet
wbWorkbook$remove_row_heights(sheet = current_sheet(), rows)
sheet
The name of the sheet
rows
rows
The wbWorkbook
object, invisibly
createCols()
creates column object for worksheet
wbWorkbook$createCols(sheet = current_sheet(), n, beg, end)
sheet
The name of the sheet
n
n
beg
beg
end
end
group_cols()
Group cols
wbWorkbook$group_cols(
sheet = current_sheet(),
cols,
collapsed = FALSE,
levels = NULL
)
sheet
The name of the sheet
cols
cols
collapsed
collapsed
levels
levels
The wbWorkbook
object, invisibly
ungroup_cols()
ungroup cols
wbWorkbook$ungroup_cols(sheet = current_sheet(), cols)
sheet
The name of the sheet
cols
columns
The wbWorkbook
object
remove_col_widths()
Remove row heights from a worksheet
wbWorkbook$remove_col_widths(sheet = current_sheet(), cols)
sheet
A name or index of a worksheet
cols
Indices 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
)
sheet
The name of the sheet
cols
cols
widths
Width of columns
hidden
A 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
)
sheet
The name of the sheet
rows
rows
collapsed
collapsed
levels
levels
The wbWorkbook
object, invisibly
ungroup_rows()
ungroup rows
wbWorkbook$ungroup_rows(sheet = current_sheet(), rows)
sheet
The name of the sheet
rows
rows
The wbWorkbook
object
remove_worksheet()
Remove a worksheet
wbWorkbook$remove_worksheet(sheet = current_sheet())
sheet
The 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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
type
type
operator
operator
value
value
allow_blank
allowBlank
show_input_msg
showInputMsg
show_error_msg
showErrorMsg
error_style
The 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_title
The error title
error
The error text
prompt_title
The prompt title
prompt
The 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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
solve
logical 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, ...)
sheet
The name of the sheet
dims
Cell 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,
...
)
sheet
The name of the sheet
first_active_row
first_active_row
first_active_col
first_active_col
first_row
first_row
first_col
first_col
...
additional arguments
The wbWorkbook
object, invisibly
add_comment()
Add comment
wbWorkbook$add_comment(sheet = current_sheet(), dims = "A1", comment, ...)
sheet
The name of the sheet
dims
row and column as spreadsheet dimension, e.g. "A1"
comment
a comment to apply to the worksheet
...
additional arguments
The wbWorkbook
object
remove_comment()
Remove comment
wbWorkbook$remove_comment(sheet = current_sheet(), dims = "A1", ...)
sheet
The name of the sheet
dims
row 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
)
sheet
The name of the sheet
dims
Cell range in a sheet
comment
the comment to add
person_id
the person Id this should be added for
reply
logical if the comment is a reply
resolve
logical 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),
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
rule
rule
style
style
type
type
params
Additional 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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
file
file
width
width
height
height
row_offset, col_offset
offsets
units
units
dpi
dpi
...
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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
width
width
height
height
row_offset, col_offset
offsets
file_type
fileType
units
units
dpi
dpi
...
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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
xml
xml
col_offset, row_offset
offsets 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,
...
)
sheet
The name of the sheet
dims
Cell range in a sheet
xml
xml
col_offset, row_offset
positioning parameters
...
additional arguments
The wbWorkbook
object
add_mschart()
Add mschart chart to the workbook
wbWorkbook$add_mschart(
sheet = current_sheet(),
dims = NULL,