All Versions
9
Latest Version
Avg Release Cycle
66 days
Latest Release
1443 days ago

Changelog History

  • v0.95.3

    May 25, 2020
  • v0.95.2

    April 26, 2020
  • v0.95.1 Changes

    April 23, 2020

    ๐Ÿ› Bugs

    #1399 .CellsUsed() should return only cells with content.

  • v0.95.0 Changes

    April 15, 2020

    ๐Ÿ’ฅ Breaking changes

    • Range strings, e.g. A1:B2 are now always treated as absolute, i.e. relative to A1 instead of relative to the top left cell of a given range.
    • ๐Ÿ”จ IXLSheetProtection has been totally refactored and now uses a flag based enum to control the elements that are allowed or locked.
    • โœ‚ Removed IXLSheetProtection.IsProtected setter
    • XLClearOptions and XLCellUsedOptions 's flags are now aligned
    • IXLDataValidation.Ranges made readonly
    • ๐Ÿšš To add or remove ranges from the data validation rule the user must use dedicated methods (AddRange, AddRanges, ClearRanges, RemoveRange)
    • A single data validation rule cannot apply to ranges from different worksheets (it was a bug that this was possible)

    ๐Ÿ”€ Pull requests merged since 0.95.0-beta2

    ๐Ÿ› Bug fixes

    ๐Ÿ’… #1063 Copy comment style correctly when shifting ranges
    #1108 Correctly save empty cell with quote prefix (do not treat as empty)
    #1125 Change cached value type when data type changes
    #1132 elements with missing r attribute: XLAddress constructor had parameters swapped
    #1133 Enumerate ranges in a deterministic order
    ๐Ÿ’… #1134 Correctly propagate worksheet style to cells from a worksheet
    ๐Ÿ’… #1135 Correctly load column-wide styles
    #1137 Fix changing inner borders of the range
    #1150 Correctly clear inline string when required
    #1153 Correctly throw DivisionByZeroException when denominator is zero.
    #1155 Ignore _X (capital X) as XML escaping char
    #1161 Avoid creation of new item in Internals.RowsCollection when adding comment
    ๐Ÿ’… #1168 Fix initialization of default styles for XLCells, XLRows, XLColumns and XLRanges
    #1172 Clear all RelId's if workbook is loaded from template.
    ๐Ÿ›  #1178 Fixes in GetHashCode functions (#1073)
    #1196 Fix error by two pivot with one source #1195
    #1223 Fix pivot subtotals loading
    ๐Ÿ”€ #1234 Merged ranges cell values should not be set, except for top left cell of merged range
    #1245 Fix the issue with conditional formats created in non-US culture (#1187)
    #1247 Fix issues related to cells inserting (#1236)
    #1266 Fix CONCATENATE for cell references
    #1282 Treat missing numberFormatId as General numberformat
    ๐Ÿšš #1289 Remove unused code and fix ATAN2 tests
    #1292 Redefine rules for sheet name escaping (#1287)
    ๐Ÿ‘ป #1307 Fix null exception when saving a file
    ๐Ÿ‘ป #1316 Fix exception when loading rows with no row index populated (#1314)
    #1323 #651: fix loading with deleted worksheets.
    #1351 Fix null DateTime in XLCell.InsertDataInternal with IEnumerable
    #1356 Fix a regular expression used for extracting A1 references
    ๐Ÿ›  #1359 Fixed the Expression double conversion operator to handle string values
    #1362 Set longText attribute for string items in pivot table
    #1369 Fix issues with loading comments (#1244)
    #1384 When saving, mark the first selected tab as active if no active tabs exist (#1383)
    #1386 Set the first sheet active and visible on loading if no active tab is specified in file (#1383)

    Enhancments

    #1015 Implement TEXTJOIN function (#1010)
    ๐Ÿ”จ #1038 IXLSheetProtection refactoring
    #1054 Implement workbook FileSharing and a few of the properties
    #1058 Don't recalculate formula cached values after load
    ๐Ÿ”จ #1077 Refactor digit and letter parsing to allow Unicode characters
    ๐Ÿ‘ #1109 Don't automatically adjust columns width to contents when inserting datatable. Some users want to opt out because of PlatformNotSupportedException
    0๏ธโƒฃ #1122 Add helper methods to add worksheet with default sheet name
    #1129 Alternative implementation of pivot table formats
    โœจ #1130 Enhance TRUNC function for additional parameter
    #1136 Implement NUMBERVALUE function
    ๐ŸŽ #1151 Performance improvement to delete entire columns
    ๐Ÿ–จ #1158 Check that print titles are valid row ranges or column ranges
    0๏ธโƒฃ #1166 Ignore default Excel function namespace and implement CONCAT function
    #1169 Avoid creating new XLCell instances during range shifting
    ๐Ÿšš #1170 Remove IXLSheetProtection.IsProtected public setter
    #1174 Correctly dispose temporary memorystream
    #1175 Sparklines implementation
    ๐ŸŽ #1183 Improve Merge operation performance
    #1194 Disallow table name that is also a valid address (#1192)
    ๐ŸŽ #1205 Improve performance of worksheet copying (#1188)
    #1208 optional range consolidation via save options
    #1219 Implement MATCH and INDEX functions
    ๐ŸŽ #1224 Improve performance of loading workbooks having many merged ranges (#1220)
    ๐Ÿ”จ #1227 Refactor comments
    #1232 Set versioning number to allow enhanced pivot table features
    ๐ŸŽ #1237 Improve HLOOKUP and VLOOKUP performance
    #1240 Prevent copying of deleted worksheets.
    ๐Ÿ—„ #1253 Replace licenseUrl (deprecated) with license tag
    #1278 Clear CellsCollection on WorksheetInternals disposal (#1276)
    #1284 Improvements for workbook saving (#1280)
    ๐Ÿšš #1293 Remove the unnecessary check for VML elements not existing (#1285)
    #1326 PopulateAutoFilter range check (#1325)
    ๐Ÿ“œ #1353 Implement % operator and correctly parse expressions with multiple unary operators (--, ++)
    #1357 Replace String.Compare with TryGetValue
    โœ… #1364 Fix issues occurred when running tests on .Net Core 3.0
    #1368 Clear inlined rich text data on saving (#1361)
    ๐Ÿ›  #1376 CEILING and FLOOR fixes
    #1379 Explicitly set document type on saving (#1375)
    #1381 Exclude dependent SUBTOTAL formulas in SUBTOTAL evaluation
    ๐ŸŽ #1388 Remove the dependency on FastMember. Improve performance of InsertData (#797)
    #1391 Replace ContainsKey with TryGetValue

  • v0.95.0-beta2

    August 11, 2019
  • v0.95.0-beta1 Changes

    April 04, 2019

    ๐Ÿ’ฅ Breaking changes

    • Range strings, e.g. A1:B2 are now always treated as absolute, i.e. relative to A1 instead of relative to the top left cell of a given range.
    • ๐Ÿ”จ IXLSheetProtection has been totally refactored and now uses a flag based enum to control the elements that are allowed or locked.
    • โœ‚ Removed IXLSheetProtection.IsProtected setter
    • XLClearOptions and XLCellUsedOptions 's flags are now aligned

    โœจ Enhancements

    • #1015 Text join func enhancement (Thanks @James-Whitfield)
    • ๐Ÿ”จ #1038 IXLSheetProtection refactoring
    • #1054 Implement workbook FileSharing and a few of the properties
    • #1058 Dont recalculate formula cached values after load
    • ๐Ÿ”จ #1077 Refactor digit and letter parsing to allow Unicode characters
    • ๐Ÿ‘ #1109 Don't automatically adjust columns width to contents when inserting datatable. Some users want to opt out because of PlatformNotSupportedException
    • #1129 Implementation pivot table formats (Thanks @b0bi79)
    • โœจ #1130 Enhance TRUNC function for additional parameter
    • #1136 Implement NUMBERVALUE function
    • ๐ŸŽ #1151 Performance improvement to delete entire columns
    • ๐Ÿ–จ #1158 Check that print titles are valid row ranges or column ranges
    • ๐Ÿšš #1170 Remove IXLSheetProtection.IsProtected public setter

    ๐Ÿ› Bug fixes

    • ๐Ÿ’… #1063 Copy comment style correctly when shifting ranges
    • #1108 Correctly save empty cell with quote prefix (do not treat as empty)
    • #1132 <c> elements with missing r attribute: XLAddress constructor had parameters swapped
    • #1133 Enumerate ranges in a deterministic order
    • ๐Ÿ’… #1134 Correctly propagate worksheet style to cells from a worksheet
    • ๐Ÿ’… #1135 Correctly load column-wide styles
    • #1137 Fix changing inner borders of the range
    • #1150 Correctly clear inline string when required
    • #1153 Correctly throw DivisionByZeroException when denominator is zero.
    • #1155 Ignore _X (capital X) as XML escaping char
    • #1161 Avoid creation of new item in Internals.RowsCollection when adding comment
    • ๐Ÿ’… #1168 Fix initialization of default styles for XLCells, XLRows, XLColumns and XLRanges

    Thanks to @Pankraty for many PRs, as usual.

    Binaries are available at:
    ๐Ÿ— ClosedXML: https://ci.appveyor.com/project/ClosedXML/closedxml/builds/23591647/job/dyitdjnq6ta3nnpb/artifacts
    ๐Ÿ— ClosedXML.Signed: https://ci.appveyor.com/project/ClosedXML/closedxml/builds/23591647/job/hk6hbr6kt807lvxf/artifacts

  • v0.94.2 Changes

    December 18, 2018

    ๐Ÿ› Bug fix release

    • #1091 Wrong worksheet for copied conditional formats fix
    • #1102 Add special case for inserting DBNull values

    ๐Ÿš€ Also see the release notes for v0.94.0

  • v0.94.1

    December 14, 2018
  • v0.94.0 Changes

    December 12, 2018

    ๐Ÿ’ฅ Breaking changes

    • ๐Ÿ“ฆ This unsigned ClosedXML package now depends on FastMember instead of FastMember.Signed. The signed ClosedXML.Signed still depends on FastMember.Signed.
    • ๐Ÿ‘€ IDisposable interface removed from IXLWorksheet. See #1049
    • ๐Ÿ‘€ IXLPictures interface has changed to accept parameters of type IXLCell instead of IXLAddress. See #930
    • ๐Ÿ‘€ IXLBaseAutoFilter removed and replaced with the existing IXLAutoFilter. See #909
    • ๐Ÿ‘€ IXLRange.ToString() and IXLRangeAddress.ToString() now return context aware range strings. See #1021

    โœจ Enhancements

    • #856 Clear pivot table rendered range upon loading to avoid conflict on rendered cells when opening the file.
    • #877 Add helper property VisibleRows for autofilters
    • #884 Allow pivot tables to have no theme
    • #904 Implement the full range of Item subclasses for pivot tables
    • #905 Don't choke on pivot table saving when formulas fail
    • #908 New methods to append and replace table data
    • #909 New method to reapply autofilter
    • #926 Disallow table with null .DataRange when saving
    • #930 Store picture markers against a range to allow shifting when inserting and deleting
    • #932 Optionally propagate extra table columns when changing data
    • #945 Allow Guid values to be inserted when dumping data
    • #962 Add ability to set cell value to an enum value
    • #978 Add table helper methods: IXLTables.TryGetTable()
    • #996 Allow table field names consisting of only whitespace
    • #999 Allow names to start with backslash
    • ๐Ÿ–จ #1005 Ignore print areas that point to external workbooks
    • โœ… #1019 Improve XLCell.TryGetValue and implement additional tests
    • #1021 Return simpler range address values
    • #1025 Lazy initialize graphics
    • ๐ŸŽ #1033 Optimize the performance of searching range intersections on small collections
    • #1035 Improve implicit string casting
    • #1036 Don't validate named ranges when loading file
    • #1044 Add check that data validation value length does not exceed 255 chars
    • #1064 Make TryGetValue_decimal_Good2test environment-independent

    ๐Ÿ› Bug fixes

    • #876 Correctly unprotect worksheet without password
    • ๐Ÿ”€ #887 Correctly determine used range when there are merged ranges on a worksheet
    • #903 Clear all cell contents (formats too) in pivot table range upon loading.
    • #906 Maintain pivot table page field order
    • #931 Delete table rows correctly
    • #947 Fix pivot table integrity when saving multiple times
    • #956 Do not quote worksheet name with whitespace when saving pivot table worksheet source
    • #969 Fix ranges consolidation
    • 0๏ธโƒฃ #985 Set XLPivotField.ShowBlankItems by default to false and fix treatment of defaults from loading file
    • #988 FIX for XLConditionalFormat equality comparer fails for ColorScale
    • 0๏ธโƒฃ #998 Copies of tables should have RelId default to null
    • #1023 Sort ranges to shift before enumerating through them to avoid new target address conflicting with existing range
    • #1028 Copy row/column visibility setting
    • ๐Ÿ”จ #1029 CellsUsed refactoring and fix
    • ๐Ÿ”€ #1031 Fix for merging cells
    • #1032 Change the way invalid ranges are saved
    • #1041 Autofilter with multiple columns with filters
    • #1047 String comparisons should be case-insensitive
    • #1048 Shift data validation ranges when inserting / delete ranges