Skip to content

Conversation

@dependabot
Copy link

@dependabot dependabot bot commented on behalf of github Jan 10, 2023

Bumps ClosedXML from 0.95.4 to 0.100.1.

Release notes

Sourced from ClosedXML's releases.

0.100.1 Implicit conversion

This is a quick improvement for https://github.com/ClosedXML/ClosedXML/releases/tag/0.100.0. It adds an implicit conversion for decimal numbers to XLCellValue, so users who generate workbooks with decimal number don't have to add explicit casting from decimal to double everywhere.

What's Changed

Full Changelog: ClosedXML/ClosedXML@0.100.0...0.100.1

0.100: Clean Break

Clean Break

These are release notes for a version 0.100. We skipped a few version since the last release (0.97), because 0.100 should denote a major change at the very heart of ClosedXML. Not as clean break as I hoped, but close enough.

The list of all things that were changed from 0.97 to 0.100 is at the migration guide at the https://closedxml.readthedocs.io/en/latest/migrations/migrate-to-0.100.html

This is more like list of you should upgrade despite breaking changes :)

Memory consumption during big was decreased

Memory consumption during saving of large data workbooks was significantly improved. Originally, ClosedXML workbook representation was converted to DocumentFomrat.OpenXML DOM representation and the DOM was then saved. Instead of creating whole DOM, sheet data (=cell values) are now directly streamed to the output file and aren't included in the DOM.

To demonstrate difference, see the before and after memory consumption of a report that generated 30 000 rows, 45 columns. Memory consumption has decreased from 2.08 GiB 🡆 0.8 GiB.

Save cells and strings through DOM: 2.08 GiB 1874-dtoMemory-save-30k-text-DOM

Save cell and strings through streaming: 0.8 GiB 1874-dtoMemory-save-30k-text-streaming

The purple area are bytes of uncompressed package zip stream.

Cell value is now strongly typed

IXLCell.Value and IXLCellValue.CachedValue have now type XLCellValue. At the core, xlsx consists of addressable cells with a functions that transform a set of values in source cells to different values in target cells. Is is really important to represent potential values of cells by a sane type. All other things, pivot tables, auto filter, graphs rely on this premise.

Cell value has been represented as string text and a value. The string depended on the value, e.g. 0/1 for boolean. That has been the case since the beginning of the ClosedXML project (see the original XLCell). The value was also returned as an Object. This approach has several drawbacks

  • Object is not suitable representation of cell value. User had no idea what kind of values could be returned as a cell value. Everything could also break down, if a new type would be returned (e.g. XLError).
  • Setter could accept different types that the getter returned. E.g. it was possible to set cell value to a IXLColumn.
  • Values were always boxed/unboxed. That is not a problem for small amount of data, but it is not great for large workbooks.
  • It caused an potentially buggy behavior in other places of the ClosedXML.

Value of a cell is not represented by a XLCellValue structure. It is basically a union of one of possible types that can be value of a cell:

  • blank
  • boolean
  • number
  • text

... (truncated)

Commits
  • 60261a6 Update version for hotfix that allows conversion of decimals without explicit...
  • 65a5c49 Add implicit conversion from decimal to double for XLCellValue. Other convers...
  • 251fb90 Add better diagnostic message, if someone tries to blank cell using null value.
  • 579a730 Add a link to release notes, migration guide and move frequest questions to t...
  • a8265fb Add a link to release notes to the nuget package. Previously, it displayed on...
  • 453f7bc Update version to 0.100 for new release.
  • f6d8723 Reorder XLError so we have easier time comparsing its values in AutoFilter. A...
  • 95a50e2 Change conditions for NotEqual custom filters, so in all cases, we can just p...
  • e8b3217 Fix the issue that NotContains filter turned into Contains filter after reapp...
  • 0d535e9 Use factory method pattern to create DefaultGraphicEngine. It more clearly de...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [ClosedXML](https://github.com/ClosedXML/ClosedXML) from 0.95.4 to 0.100.1.
- [Release notes](https://github.com/ClosedXML/ClosedXML/releases)
- [Commits](ClosedXML/ClosedXML@0.95.4...0.100.1)

---
updated-dependencies:
- dependency-name: ClosedXML
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added the dependencies Pull requests that update a dependency file label Jan 10, 2023
@dependabot @github
Copy link
Author

dependabot bot commented on behalf of github Jan 11, 2023

Superseded by #29.

@dependabot dependabot bot closed this Jan 11, 2023
@dependabot dependabot bot deleted the dependabot/nuget/ClosedXML-0.100.1 branch January 11, 2023 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant