Skip to content

New version: XLSX v0.11.0#151086

Merged
JuliaTagBot merged 1 commit intomasterfrom
registrator-xlsx-fdbf4ff8-v0.11.0-65b7f9bc9f
Mar 23, 2026
Merged

New version: XLSX v0.11.0#151086
JuliaTagBot merged 1 commit intomasterfrom
registrator-xlsx-fdbf4ff8-v0.11.0-65b7f9bc9f

Conversation

@JuliaRegistrator
Copy link
Copy Markdown
Contributor

@JuliaRegistrator JuliaRegistrator commented Mar 23, 2026

## Breaking changes
There is only one breaking change in this version:

- `infer_eltypes` now defaults to `true` (e.g. in `gettable` and `readtable`). This is the more common use case but,
  if it is not *your* use case, you will need explicitly to set `infer_eltypes = false` in the relevant functions.

All other changes either introduce new functionality (documented elsewhere) or relate to internals only.

## 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](https://github.com/JuliaLang/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`,
    `RichTextString`, `RichTextRun`,
    `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:
https://github.com/JuliaData/XLSX.jl/issues/52, https://github.com/JuliaData/XLSX.jl/issues/61, https://github.com/JuliaData/XLSX.jl/issues/63, https://github.com/JuliaData/XLSX.jl/issues/80, https://github.com/JuliaData/XLSX.jl/issues/88, https://github.com/JuliaData/XLSX.jl/issues/120, https://github.com/JuliaData/XLSX.jl/issues/147, https://github.com/JuliaData/XLSX.jl/issues/148, https://github.com/JuliaData/XLSX.jl/issues/150, https://github.com/JuliaData/XLSX.jl/issues/155, https://github.com/JuliaData/XLSX.jl/issues/156, https://github.com/JuliaData/XLSX.jl/issues/159, https://github.com/JuliaData/XLSX.jl/issues/165, https://github.com/JuliaData/XLSX.jl/issues/172, https://github.com/JuliaData/XLSX.jl/issues/179, https://github.com/JuliaData/XLSX.jl/issues/184, https://github.com/JuliaData/XLSX.jl/issues/189, https://github.com/JuliaData/XLSX.jl/issues/190, https://github.com/JuliaData/XLSX.jl/issues/198, https://github.com/JuliaData/XLSX.jl/issues/222, https://github.com/JuliaData/XLSX.jl/issues/224, https://github.com/JuliaData/XLSX.jl/issues/232, https://github.com/JuliaData/XLSX.jl/issues/234, https://github.com/JuliaData/XLSX.jl/issues/235, https://github.com/JuliaData/XLSX.jl/issues/238, https://github.com/JuliaData/XLSX.jl/issues/239, https://github.com/JuliaData/XLSX.jl/issues/241, https://github.com/JuliaData/XLSX.jl/issues/243, https://github.com/JuliaData/XLSX.jl/issues/251, https://github.com/JuliaData/XLSX.jl/issues/252, https://github.com/JuliaData/XLSX.jl/issues/253, https://github.com/JuliaData/XLSX.jl/issues/258, https://github.com/JuliaData/XLSX.jl/issues/259, https://github.com/JuliaData/XLSX.jl/issues/260, https://github.com/JuliaData/XLSX.jl/issues/275, https://github.com/JuliaData/XLSX.jl/issues/276, https://github.com/JuliaData/XLSX.jl/issues/277, https://github.com/JuliaData/XLSX.jl/issues/278, https://github.com/JuliaData/XLSX.jl/issues/281, https://github.com/JuliaData/XLSX.jl/issues/284, https://github.com/JuliaData/XLSX.jl/issues/299, https://github.com/JuliaData/XLSX.jl/issues/301, https://github.com/JuliaData/XLSX.jl/issues/305, https://github.com/JuliaData/XLSX.jl/issues/308,  https://github.com/JuliaData/XLSX.jl/issues/311, https://github.com/JuliaData/XLSX.jl/issues/314, https://github.com/JuliaData/XLSX.jl/issues/316, https://github.com/JuliaData/XLSX.jl/issues/324, https://github.com/JuliaData/XLSX.jl/issues/331, https://github.com/JuliaData/XLSX.jl/issues/335, https://github.com/JuliaData/XLSX.jl/issues/338, https://github.com/JuliaData/XLSX.jl/issues/342.

## 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.

## Internal changes
A number of changes to package internals have been made. Specifically, changes have been made to the following data `struct`s:

- `SheetRowStreamIteratorState`
- `WorksheetCacheIteratorState`
- `WorksheetCache`
- `XLSXFile`
- `Workbook`
- `Worksheet`
- `SheetRow`
- `Cell`

In particular, the internal memory configuration of an `XLSXFile` object and its components has 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).

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 23, 2026

Hello, I am an automated registration bot. I help manage the registration process by checking your registration against a set of AutoMerge guidelines. If all these guidelines are met, this pull request will be merged automatically, completing your registration. It is strongly recommended to follow the guidelines, since otherwise the pull request needs to be manually reviewed and merged by a human.

1. AutoMerge Guidelines are all met! ✅

Your new version registration met all of the guidelines for auto-merging and is scheduled to be merged in the next round (~20 minutes).

2. To pause or stop registration

If you want to prevent this pull request from being auto-merged, simply leave a comment. If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment.

Tip: You can edit blocking comments to add [noblock] in order to unblock auto-merging.

@JuliaRegistrator JuliaRegistrator force-pushed the registrator-xlsx-fdbf4ff8-v0.11.0-65b7f9bc9f branch from a73310d to 1dffb14 Compare March 23, 2026 08:46
@TimG1964
Copy link
Copy Markdown
Contributor

TimG1964 commented Mar 23, 2026

@JuliaRegistrator register

Release notes:

Breaking changes

There is only one breaking change in this version:

  • infer_eltypes now defaults to true (e.g. in gettable and readtable). This is the more common use case but,
    if it is not your use case, you will need explicitly to set infer_eltypes = false in the relevant functions.

All other changes either introduce new functionality (documented elsewhere) or relate to internals only.

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,
    RichTextString, RichTextRun,
    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:
JuliaData/XLSX.jl#52, JuliaData/XLSX.jl#61, JuliaData/XLSX.jl#63, JuliaData/XLSX.jl#80, JuliaData/XLSX.jl#88, JuliaData/XLSX.jl#120, JuliaData/XLSX.jl#147, JuliaData/XLSX.jl#148, JuliaData/XLSX.jl#150, JuliaData/XLSX.jl#155, JuliaData/XLSX.jl#156, JuliaData/XLSX.jl#159, JuliaData/XLSX.jl#165, JuliaData/XLSX.jl#172, JuliaData/XLSX.jl#179, JuliaData/XLSX.jl#184, JuliaData/XLSX.jl#189, JuliaData/XLSX.jl#190, JuliaData/XLSX.jl#198, JuliaData/XLSX.jl#222, JuliaData/XLSX.jl#224, JuliaData/XLSX.jl#232, JuliaData/XLSX.jl#234, JuliaData/XLSX.jl#235, JuliaData/XLSX.jl#238, JuliaData/XLSX.jl#239, JuliaData/XLSX.jl#241, JuliaData/XLSX.jl#243, JuliaData/XLSX.jl#251, JuliaData/XLSX.jl#252, JuliaData/XLSX.jl#253, JuliaData/XLSX.jl#258, JuliaData/XLSX.jl#259, JuliaData/XLSX.jl#260, JuliaData/XLSX.jl#275, JuliaData/XLSX.jl#276, JuliaData/XLSX.jl#277, JuliaData/XLSX.jl#278, JuliaData/XLSX.jl#281, JuliaData/XLSX.jl#284, JuliaData/XLSX.jl#299, JuliaData/XLSX.jl#301, JuliaData/XLSX.jl#305, JuliaData/XLSX.jl#308, JuliaData/XLSX.jl#311, JuliaData/XLSX.jl#314, JuliaData/XLSX.jl#316, JuliaData/XLSX.jl#324, JuliaData/XLSX.jl#331, JuliaData/XLSX.jl#335, JuliaData/XLSX.jl#338, JuliaData/XLSX.jl#342.

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.

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 has 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).

[noblock]

@JuliaTagBot JuliaTagBot added the AutoMerge: last run blocked by comment PR blocked by one or more comments lacking the string [noblock]. label Mar 23, 2026
@JuliaTagBot JuliaTagBot removed the AutoMerge: last run blocked by comment PR blocked by one or more comments lacking the string [noblock]. label Mar 23, 2026
@TimG1964
Copy link
Copy Markdown
Contributor

@JuliaRegistrator register

Release notes:

Breaking changes

There is only one breaking change in this version:

  • infer_eltypes now defaults to true (e.g. in gettable and readtable). This is the more common use case but,
    if it is not your use case, you will need explicitly to set infer_eltypes = false in the relevant functions.

All other changes either introduce new functionality (documented elsewhere) or relate to internals only.

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,
    RichTextString, RichTextRun,
    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:
JuliaData/XLSX.jl#52, JuliaData/XLSX.jl#61, JuliaData/XLSX.jl#63, JuliaData/XLSX.jl#80, JuliaData/XLSX.jl#88, JuliaData/XLSX.jl#120, JuliaData/XLSX.jl#147, JuliaData/XLSX.jl#148, JuliaData/XLSX.jl#150, JuliaData/XLSX.jl#155, JuliaData/XLSX.jl#156, JuliaData/XLSX.jl#159, JuliaData/XLSX.jl#165, JuliaData/XLSX.jl#172, JuliaData/XLSX.jl#179, JuliaData/XLSX.jl#184, JuliaData/XLSX.jl#189, JuliaData/XLSX.jl#190, JuliaData/XLSX.jl#198, JuliaData/XLSX.jl#222, JuliaData/XLSX.jl#224, JuliaData/XLSX.jl#232, JuliaData/XLSX.jl#234, JuliaData/XLSX.jl#235, JuliaData/XLSX.jl#238, JuliaData/XLSX.jl#239, JuliaData/XLSX.jl#241, JuliaData/XLSX.jl#243, JuliaData/XLSX.jl#251, JuliaData/XLSX.jl#252, JuliaData/XLSX.jl#253, JuliaData/XLSX.jl#258, JuliaData/XLSX.jl#259, JuliaData/XLSX.jl#260, JuliaData/XLSX.jl#275, JuliaData/XLSX.jl#276, JuliaData/XLSX.jl#277, JuliaData/XLSX.jl#278, JuliaData/XLSX.jl#281, JuliaData/XLSX.jl#284, JuliaData/XLSX.jl#299, JuliaData/XLSX.jl#301, JuliaData/XLSX.jl#305, JuliaData/XLSX.jl#308, JuliaData/XLSX.jl#311, JuliaData/XLSX.jl#314, JuliaData/XLSX.jl#316, JuliaData/XLSX.jl#324, JuliaData/XLSX.jl#331, JuliaData/XLSX.jl#335, JuliaData/XLSX.jl#338, JuliaData/XLSX.jl#342.

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.

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 has 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).

[noblock]

UUID: fdbf4ff8-1666-58a4-91e7-1b58723a45e0
Repo: https://github.com/JuliaData/XLSX.jl.git
Tree: 9a69aaa75b0c29ec0bad391d960157d74c19e5b9

Registrator tree SHA: 50f504d641745716a5b3eabaf681d3a4937d2ae3
@JuliaRegistrator JuliaRegistrator force-pushed the registrator-xlsx-fdbf4ff8-v0.11.0-65b7f9bc9f branch from 1dffb14 to a992cbb Compare March 23, 2026 14:28
@JuliaTagBot JuliaTagBot merged commit c250fc4 into master Mar 23, 2026
13 checks passed
@JuliaTagBot JuliaTagBot deleted the registrator-xlsx-fdbf4ff8-v0.11.0-65b7f9bc9f branch March 23, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants