Changes in version 4.2.8.1 (2025-10-31) - Fix for upcoming testthat release (@hadley, #530) Changes in version 4.2.8 (2025-01-25) - Fix the docs for setLastModifiedBy() and getCreators() (@PBfordev, #505) - Fix an integer overflow in setRowHeights() - Fix a coercion warning in get_worksheet_entries() (@philaris, #512) - Fix a bug in deleteDataColumn() (@DavZim, #515) Changes in version 4.2.7.1 (2024-09-20) - It's now possible to insert a hyperlink image by passing a URL, relative or absolute file path, or mailto string to the new address parameter of insertImage(). Changes in version 4.2.7 (2024-08-30) - Fixed warning on dataValidation(..., type = "list") (#342) - Added optional argument to loadWorkbook to decide if empty/blank cells should be converted to NA_character_ (the default) or left blank as is - saveWorkbook() now succeeds when called after the user has set column widths for a range of columns (e.g. 1:2), saved the workbook, then set column widths for a new range that is inclusive of the previous one (e.g. 1:5) (#493). Improvements - Improve detectDates (#288) - Preserve window size and position, also getWindowSize() and setWindowSize() (466) Changes in version 4.2.6 (2024-07-23) - Fix external links (#410) - Do not add unnecessary sheetPr node (#409) - Add support for namedRegions having dots and other special characters (#338). - Add type blanks and not blanks to conditional formatting (#311) Changes in version 4.2.5 (2021-12-14) Fixes - openxlsx_setOp() now works with named list (#215) - loadWorkbook() imports inlineStr. Values remain inlineStr when writing the workbook with saveWorkbook(). Similar read.xlsx and readWorkbook import inlineStr. - read.xlsx() no longer changes random seed (#183) - fixed a regression that caused fonts to be read in incorrectly (#207) - add option to save as read only recommended (#201) - fixed writing hyperlink formulas (#200) - write.xlsx() now throws an error if it doesn't have write permissions (#190) - write.xlsx() now again uses the default of overwrite = TRUE for saving files (#249) - as.character.formula() exported to warn about potential conflicts with other packages (#312, #315) Improvements - options() are more consistently set in functions (see: #289) - Workbook$show() no longer fails when called in a 0 sheet workbook(#240) - read.xlsx() again accepts .xlsm files (#205, #209) - makeHyperlinkString() does no longer require a sheet argument (#57, #58) - improvements in how openxlsx creates temporary directories (see #262) - writeData() calls force(x) to evaluate the object before options are set (#264) - createComment() now correctly handles integers in width and height (#275) - setStyles() accepts halign="justify" (#305) Changes in version 4.2.4 (2021-06-16) Fixes - write.xlsx() now successfully passes withFilter (#151) - code clean up PR #168 - removal of unused variables PR #168 New features - adds buildWorkbook() to generate a Workbook object from a (named) list or a data.frame (#192, #187) - this is now recommended rather than the write.xlsx(x, file) ; wb <- read.xlsx(file) functionality before - write.xlsx() is now a wrapper for wb <- buildWorkbook(x); saveWorkbook(x, file) - parameter checking from write.xlsx() >> buildWorkbook() are now held off until passed to writeData(), writeDataTable(), etc - row.names is now deprecated for writeData() and writeDataTable(); please use rowNames instead - read.xlsx() now checks for the file extension .xlsx; previously it would throw an error when the file was .xls or .xlm files - memory allocation improvements - global options added for minWidth and maxWidth - write.xlsx() >> buildWorkbook() can now handle colWidths passed as either a single element or a list() - Added ability to change positioning of summary columns and rows. - These can be set with the summaryCol and summaryRow arguments in pageSetup(). - activeSheet allows to set and get the active (displayed) sheet of a workbook. - Adds new global options for workbook formatting (#165; see ?op.openxlsx) Changes in version 4.2.3 (2020-10-27) New Features - Most of functions in openxlsx now support non-ASCII arguments better. More specifically, we can use non-ASCII strings as names or contents for createNamedRegion() (#103), writeComment(), writeData(), writeDataTable() and writeFormula(). In addition, openxlsx now reads comments and region names that contain non-ASCII strings correctly on Windows. Thanks to @shrektan for the PR #118. - setColWidths() now supports zero-length cols, which is convenient when cols is dynamically provided #128. Thanks to @shrektan for the feature request and the PR. Fixes for Check issues - Fix to pass the tests for link-time optimization type mismatches - Fix to pass the checks of native code (C/C++) based on static code analysis Bug Fixes - Grouping columns after setting widths no longer throws an error (#100) - Fix inability to save workbook more than once (#106) - Fix loadWorkbook() sometimes importing incorrect column attributes Changes in version 4.2.2 (2020-09-17) New Features - Added features for conditionalFormatting to support also 'contains not', 'begins with' and 'ends with' - Added return value for saveWorkbook() the default value for returnValue is FALSE (#71) - Added Tests for new parameter of saveWorkbook() Bug Fixes - Solved CRAN check errors based on the change discussed in PR#17277 Changes in version 4.2.0 New Features - Added groupColumns(), groupRows(), ungroupColumns(), and ungroupRows() to group/ugroup columns/rows (#32) Bug Fixes - Allow xml-sensitive characters in sheetnames (#78) Internal - Updated roxygen2 to 7.1.1 Changes in version 4.1.5.1 Bug Fixes - fixed issue #68 Changes in version 4.1.5 (2020-05-06) New Features - Add functions to get and set the creator of the xlsx file - add function to set the name of the user who last modified the xlsx file Bug Fixes - Fixed NEWS hyperlink - Fixed writing of mixed EST/EDT datetimes - Added description for writeFormula() to use only English function names - Fixed validateSheet for special characters Internal - applied the tidyverse-style to the package styler::style_pkg() - include tests for cloneWorksheet Changes in version 4.1.4 (2019-12-06) New Features - Added getCellRefs() as function. #7 - Added parameter for customizing na.strings Bug Fixes - Use zip::zipr() instead of zip::zip(). - Keep correct visibility option for loadWorkbook. #12 - Add space surrounding "wrapText" #17 - Corrected Percentage, Accounting, Comma, Currency class on column level Internal - update to roxygen2 7.0.0 Changes in version 4.1.3 (2019-11-07) New Features - Added a NEWS.md file to track changes to the package. - Added pkgdown to create site. Bug Fixes - Return values for cpp changed to R_NilValue for r-devel tests - Added empty lines at the end of files Changes in version 4.1.2 (2019-10-29) - Changed maintainer Changes in version 4.1.1 New Features - sep.names allows choose other separator than '.' for variable names with a blank inside - Improve handling of non-region names in getNamedRegions and add related test Changes in version 4.1.0 (2018-05-26) New Features - deleteNamedRegions to delete named region and optionally the worksheet data - set Workbook properties 'title', 'subject', 'category' Bug Fixes - pageSetup fails when passing in sheet by name - matching sheet names with special characters now works - skipEmptyCols being ignored by read.xlsx.Workbook - zero column data.frames would throw an error. - read.xlsx on files created using apache poi failed to match sheet name to xml file. - deleted table re-appearing after save & load. - newline characters in table names would corrupt file - datetime precision Changes in version 4.0.17 (2017-03-23) New Features - getNamedRegions returns sheet name and cell references along with the named regions. - borderStyle and borderColour can be vector to specify different values for each side - dataValidation type "list" - dataBar showValue, gradient and border can now be set through conditionalFormatting() - options("openxlsx.zipflags") to pass additional flags to zip application e.g. compression level - getTables() and removeTable() to show and remove Excel table objects - set column to 'hidden' with setColWidths() Bug Fixes - skipEmptyRows & skipEmptyCols was being ignored by read.xlsx - date detection basic_string error - multiple spaces in table column names were not being maintained thus corrupting the xlsx file. - openXL fail silently on relative paths - headerStyle failed when writing a list of length 1 using write.xlsx - detectDate for read.xlsx issues - some Excel column types causing existing styling to be removed - na.strings no longer ignored for read.xlsx.Workbook - partial dollar matches on 'font' and 'fill' fixed - maintain hidden columns and their custom widths in loadWorkbook() - overwriting cells with borders sometimes removed the border styling Changes in version 4.0.0 (2017-01-09) New Features - Reduced RAM usage and improved performance - maintain vbaProject, slicers, pivotTables on load - Read and load from URL Bug Fixes - Fix date time conversion accuracy issues. - Allow multibyte characters in names and comments. - Remove tolower() over style number formats to allow uppercase cell formatting - Stacking styles fixed. Changes in version 3.0.2 New Features - "between" type for conditional formatting values in some interval. - colWidths parameter added to write.xlsx for auto column widths. - freezePane parameter handling added to write.xlsx. - visible parameter to addWorksheet to hide worksheets. - sheetVisible function to get and assign worksheet visibility state "hidden"/"visible" - pageBreak function to add page breaks to worksheets. Bug Fixes - keepNA parameter added to write.xlsx. Passed to writeData/writeDataTable Changes in version 3.0.1 New Features - improved performance of read.xlsx and loadWorkbook - writeFormula function added to write cell formulas. Also columns with class "formula" are written as cell formulas similar how column classes determine cell styling - Functionality to write comments and maintain comments with loadWorkbook - check.names argument added read.xlsx to make syntactically valid variable names - loadWorkbook maintains cell indents - namedRegion parameter added to read.xlsx to read a named region. - getNamed regions to return names of named regions in a workbook - getSheetNames to get worksheet names within an xlsx file. Bug Fixes - convertToDateTime now handles NA values - read.xlsx rows bug fixed where non-consecutive cells were skipped. - convertToDate & convertToDateTime now handle NA values. - out of bounds worksheet fixed for libre office xlsx files. - loadWorkbook now maintains chartSheets Changes in version 2.4.0 (2015-03-07) New Features - stackable cell styling - getDateOrigin function to return the date origin used internally by the xlsx file to pass to convertToDate - Auto-detection of date cells. Cells that "look" like dates will be converted to dates when reading from file. - read.xlsx.Workbook to read from workbook objects - colIndex, rowIndex added to read.xlsx to only read specified rows and columns - Excel slicers now maintained by loadWorkbook - fill styles extended to support gradientFill Bug Fixes - Encoding fixed and multi-byte characters now supported. - read.xlsx now maintains multiple consecutive spaces and newline characters. - convertToDate & convertToDateTime now handle NA values. - multiple selected worksheet issue which preventing adding of new worksheets in Excel. - zoom parameter now limited to [10, 400] and documentation updated. - write.xlsx colnames parameter being assigned to rownames - Handling of NaN and Inf values in writeData Changes in version 2.1.3 New Features - conditionalFormatting type "databar" - asTable parameter to write.xlsx to writing using writeDataTable. - extended numFmt formatting to numeric rounding also added option("openxlsx.numFmt" = ...) for default number formatting of numeric columns - additional numFmt "comma" to format numerics with "," thousands separator - tableName parameter to writeDataTable to assign the table a name - headerStyle parameter to writeDataTable for additional column names styling - textRotation parameter to createStyle to rotate cell text - functions addFilter & removeFilter to add filters to columns - Headers & footers extended, can now be set with addWorksheet and setHeaderFooter. setHeader & setFooter deprecated. - "fitToWidth" and "fitToHeight" logicals in pageSetup. - "zoom" parameter in addWorksheet to set worksheet zoom level. - "withFilter"" parameter to writeDataTable and writeData to remove table filters - keepNa parameter to writeDataTable and writeData to write NA values as #N/A - auto column widths can now be set with width = "auto" VIGNETTE - section on write.xlsx in Introductory vignette Bug Fixes - Fix reading in of apostrophes - Styling blank cells no longer corrupts workbooks - read.xlsx now correctly reads sharedStrings with inline styling - sharedStrings now exact matches true/false to determine logical values from workbooks. - fomulas in column caused openxlsx to crash. This has been fixed. Changes in version 2.0.15 (2014-07-27) New Features - writeData now style based on column class the same as writeDataTable - Vignette "Formatting" for examples focused on formatting - Customizable date formatting with createStyle and also through option("openxlsx.dateFormat" = ...) - Customizable POSIX formatting with createStyle and also through option("openxlsx.datetimeFormat" = ...) - Generalised conditionalFormat function to complex expressions and color scales. - writeData border type "all" to draw all borders and maintain column styling. - Deprecated "sheets" and replaced with "names" function - column class "scientific" to automatically style as scientific numbers - writeData now handles additional object classes: coxph, cox.zph, summary.coxph1 from Survival package Bug Fixes - Invalid XML characters in hyperlinks now replaced. - Encoding issues when writing data read in with read.xlsx - scientific notation resulting in corrupt workbooks fix - Multiple saves of Workbooks containing conditional formatting were corrupt. - Latin1 characters now write correctly. - logicals written as 0/1 instead of TRUE/FALSE Changes in version 2.0.1 (2014-05-29) New Features - write.xlsx function to write data directly to file via the writeData function with basic cell styling. - writeDataTable now styles columns of class 'Date', 'POSIXct', 'POSIXt', 'currency', 'accounting', 'percentage' as Excel formats Date, Date, Date, Currency, Accounting, Percentage respectively. - Data of class 'Date', 'POSIXct', 'POSIXt', 'currency', 'accounting' are converted to integers upon writing (as opposed to characters). - writeDataTable converts columns of class 'hyperlink' to hyperlinks. - logicals are converted to Excel booleans - hyperlinks in loaded workbooks are now maintained - borderStyle argument to createStyle to modify border line type. - borderStyle argument to writeData to modify border line type. - "worksheetOrder" function to shuffle order of worksheets when writing to file - openXL function to open an excel file or Workbook object Bug Fixes - conversion of numeric data to integer in read.xlsx fixed. - readWorkbook/read.xlsx should work now. Empty values are now padded with NA. Many other bugs fixed. - borders on single row and/or column data.frames now work. - readWorkbook/read.xlsx check for TRUE/FALSE values is now case-insensitive. - sheet names containing invalid xml characters (&, <, >, ', ") now work when referencing by name and will not result in a corrupt workbook. - sheet names containing non-local characters can now be referenced by name. - Invalid factor level when missing values in writeData - saveWorkbook now accepts relative paths. - Non-local character encoding issues. - errors in vignette examples. - numbers with > 8 digits were rounded in writeData