readODS 2.2.0

readODS 2.1.1

Bug fixes

readODS 2.1.0

CRAN version

readODS 2.0.7

append and update of write_ods in C++

Significant speed improvement; also xml2 is no longer a dependency.

POTENTIALLY BREAKING: reading single-row / single-column (F)ODS and col_names / row_names

Prior the previous stable release, <= 1.9.0, reading single-row / single-column with col_names = TRUE / row_names = TRUE produced errors.

In v1.9.0 (and the stable version v2.0.0 on CRAN), reading single-row / single-column (F)ODS with col_names = TRUE / row_names = TRUE will override the two parameters and return a non-empty data frame. This behaviour is consistent with other data reading R functions (see #146) such as readxl::read_xlsx(), readr::read_csv(), data.table::fread(), and openxlsx::read.xlsx(). For these functions, either a empty or zero-row data.frame is returned.

We changed this behaviour. The following will return a zero-row data.frame by default.

read_ods(write_ods(mtcars[0,])) ## col_names is TRUE by default

However, the previous behaviour is in the stable release and backward compatibility is needed. If you need that previous behaviour, please set the options("readODS.v200" = TRUE)

options("readODS.v200" = TRUE)
read_ods(write_ods(mtcars[0,])) ## col_names is TRUE by default

readODS 2.06

write_ods and write_fods allow list of data frames

Fix #56; and it is now the same as writexl::write_xlsx().

write_ods(list("some_car_data" = mtcars, "some_flower_data" = iris))

bug fixes

readODS 2.05

Reverse the decision to deprecate ods_sheets

See discussion #133

readODS 2.04

col_types can be character (“shorthand”) or list

fix #135 and the review by Dr Ruedni

# Specifying col_types as shorthand, the third column as factor; other by guessing
read_ods("starwars.ods", col_types = "??f")
# Specifying col_types as list
read_ods("starwars.ods", col_types = list(species = "f"))

readODS 2.0.3

Add support for writing flat ODS

write_fods is available, fix #103

readODS 2.0.2

performance improvement for write_ods

write_ods has been partially rewritten in C++ #140

Ensure R 3.6 compatibility

To ensure UTF-8 everywhere, fix #107

Bump requirement to R>=3.6

Bug fixes

readODS 2.0.1

Fix writing data time columns error #137

dttm column was incorrectly written with one more column. It’s now fixed.

readODS 2.0.0

BREAKING CHANGES: Changed write_ods(na_as_string) behaviour

The default for na_as_string was getOption("write_ods_na", default = FALSE) in v1.8. The default now is FALSE, but it writes NA as blank cell (instead of the buggy behaviour of writing NA in the original type, which is rendered as 0 by LibreOffice for numeric types. see #79). This behaviour is compatible with the default of writexl::write_xlsx.

The behaviour of na_as_string = TRUE is the same as in v1.8: writes NA as string.

BREAKING CHANGES: Removed get_num_sheets_in_{f}ods()

The descendant of getNrOfSheetsInODS() is not very useful. If you really need to have the similar function:

length(list_ods_sheets("starwars.ods"))

BREAKING CHANGES: Removed several obsolete parameters of write_ods()

BREAKING CHANGES: Limited size of sheets writable with write_ods()

BREAKING CHANGES: read_ods now outputs as tibble by default

Defer the removal of ods_sheets to v3

There are many reverse dependencies using ods_sheets.

readODS 1.9.0

BREAKING CHANGES: Removed read.ods and ods_sheets

These have been deprecated for several years.

list_ods_sheets

read_ods

read_fods

write_ods