Skip to content

possible release notes for v0.11.0 #316

@TimG1964

Description

@TimG1964

(EDIT1 18-Sep - to reflect comments from @nhz2, below)
(EDIT2 19-Sep - to reflect #321 from @nhz2)
(EDIT3 09-Oct - to reflect #326 (proposed setFormula function) and add list of fixed issues)
(EDIT4 20-Oct - update list of fixed issues)
(EDIT5 10-Nov - update list of fixed issues (again))
(EDIT6 01-Dec - Change rename! to renamesheet! for consistency)
(EDIT7 07-Dec - to reflect #332 supporting transposed tables)
(EDIT8 16-Jan - to reflect #341 reducing the memory footprint)
(EDIT9 21-Feb - To reflect #343 including support for AnnotatedStrings to create rich text formats)
(EDIT10 03-Mar - To reflect comments left in #335)

Hi Felipe,

You may not want these, but I drafted some release notes for v0.11.0. Discard if inappropriate.

v0.11.0 Release Notes

There are almost no changes in functional APIs in v0.11.0 compared with v0.10.4. Those changes that have been made are described briefly here.

Documentation

The documentation for this package has been extended substantially to cover the new functionality and all changes are (should be) reflected therein. In particular, a detailed guide to using the new formatting functions has been added.

New Functions

A number of new functions have been added compared with v0.10.4.

These include 18 new functions to support formatting of cells and cell values together with functions to copy or delete a sheet, to merge cells and to add new defined names for cells or cell ranges. In addition, it is now also possible to assign AnnotatedStrings (from StyledStrings.jl) to cells to create content using Excel's rich text formatting.

A new function, XLSXFile, is provided that takes a Tables.jl compatible table and creates a new XLSXFile object for writing and which can act as a sink for functions such as CSV.read.

A new function, renamesheet! is created to replace rename! for consistency in naming with addsheet!, copysheet! and deletesheet! and to avoid potential name conflicts when exported (e.g. with DataFrames.rename!). However, the existing function XLSX.rename! is retained (but not exported) to avoid a breaking change.

Two new functions, gettransposedtable and readtransposedtable, mirror gettable and readtable for worksheet tables that have data organised in rows rather than columns.

Some additional convenience functions have also been added to streamline functions that were already available (such as newxlsx, savexlsx).

A wide range of additional indexing options is now widely supported by most functions. Most functions now support indexing rows and columns using vectors, ranges and step ranges and will accept a colon.

Exported Functions

Most useful functions are now public, and can be used without the XLSX. prefix. The following function names are now exported:

  • Files and worksheets
    XLSXFile, readxlsx, openxlsx, opentemplate, newxlsx, writexlsx, savexlsx,
    Worksheet, sheetnames, sheetcount, hassheet,
    addsheet!, renamesheet!, copysheet!, deletesheet!

  • Cells & data
    CellRef, row_number, column_number, eachtablerow,
    readdata, getdata, gettable, readtable, readto,
    gettransposedtable, readtransposedtable,
    writetable, writetable!,
    setFormula,
    addDefinedName

  • Formats
    setFormat, setFont, setBorder, setFill, setAlignment,
    setUniformFormat, setUniformFont, setUniformBorder, setUniformFill, setUniformAlignment, setUniformStyle,
    setConditionalFormat,
    getRichTextFormat
    setColumnWidth, setRowHeight,
    getMergedCells, isMergedCell, getMergedBaseCell, mergeCells

The iterator XLSX.eachrow has retained the XLSX prefix to avoid making a breaking change. However, Base.eachrow now refers to XLSX.eachrow for XLSX.Worksheet data types, meaning that eachrow can be used without qualification, too.

Fixed issues

This release addresses the following issues:
#52, #61, #63, #80, #88, #120, #147, #148, #150, #155, #156, #159, #165, #172, #179, #184, #189, #190, #198, #222, #224, #232, #234, #235, #238, #239, #241, #243, #251, #252, #253, #258, #259, #260, #275, #276, #277, #278, #281, #284, #299, #301, #305, #308, #311, #314, #316, #324, #331, #335, #338, #342.

Breaking changes

There is only one breaking change in this version:

  • infer_eltypes now defaults to true (e.g. in gettable and readtable).

I don't think there are any other breaking changes.

Internal changes

A number of changes to package internals have been made. Specifically, changes have been made to the following data structs:

  • SheetRowStreamIteratorState
  • WorksheetCacheIteratorState
  • WorksheetCache
  • XLSXFile
  • Workbook
  • Worksheet
  • SheetRow
  • Cell

In particular, the internal memory configuration of an XLSXFile object and its components have been changed significantly, nearly halving the package's memory footprint.

Changed dependencies

v0.11.0 has now fully migrated to ZipArchives.jl whereas v0.10.4 relied upon both this and ZipFiles.jl. In addition, xml support is now from XML.jl rather than EzXML.jl.

The use of AnnotatedStrings is supported through a package extension. This requires StyledStrings.jl to be in the active environment.

New functionality that has been added has brought the following additional dependencies compared with v0.10.4:

  • Colors.jl
  • UUIDs.jl
  • Random.jl

In addition, the test suite now has dependencies on CSV.jl, Distributions.jl and StyledStrings.jl.

Precompilation

v0.11.0 now makes use of PrecompileTools.jl (initially only in a small way).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions