SpreadsheetLight 3.4.7

There is a newer version of this package available.
See the version list below for details.
dotnet add package SpreadsheetLight --version 3.4.7                
NuGet\Install-Package SpreadsheetLight -Version 3.4.7                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SpreadsheetLight" Version="3.4.7" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SpreadsheetLight --version 3.4.7                
#r "nuget: SpreadsheetLight, 3.4.7"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SpreadsheetLight as a Cake Addin
#addin nuget:?package=SpreadsheetLight&version=3.4.7

// Install SpreadsheetLight as a Cake Tool
#tool nuget:?package=SpreadsheetLight&version=3.4.7                

SpreadsheetLight is an open source Open XML spreadsheet library for .NET Framework written in C#, and is released under the MIT License. You can create new Open XML spreadsheets, or work with existing Open XML spreadsheets that are compatible with Microsoft Excel 2007/2010/2013 and LibreOffice Calc.

No Office/Excel Interop needed. You do not need Microsoft Office/Excel to be installed.

Dependency: Open XML SDK 2.5

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (21)

Showing the top 5 NuGet packages that depend on SpreadsheetLight:

Package Downloads
FastReport.Data.Excel

Represents a connection to Excel data. Shared Plugin for all versions of FastReport product: FastReport .NET, FastReport.Core, FastReport.OpenSource, FastReport.WPF, FastReport.Avalonia. Requirements: Any FastReport 2025.1.4.0+ package, NuGet Client 3.4.4+

SpreadsheetHelper

.NET Spreadsheet Object Wrapper for SpreadsheetLight

AutomationFramework_NetCore

AT Net Core Automation Framework

TechTools.Utils

Utilitarios con funciones que se utilizan en varios proyectos de desarrollo de software

MagiQL.Framework.Renderers.SpreadsheetGenerator

MagiQL :: MagiQL.Framework.Renderers.SpreadsheetGenerator

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on SpreadsheetLight:

Repository Stars
FastReports/FastReport
Free Open Source Reporting tool for .NET6/.NET Core/.NET Framework that helps your application generate document-like reports
Kinovea/Kinovea
Video solution for sport analysis. Capture, inspect, compare, annotate and measure technical performances.
Tadelsucht/BulkPDF
BulkPDF is a free and easy to use open source software, which allows to automatically fill an existing PDF form with differen values. Only a spreadsheet (Microsoft Excel 2007/2010/2013, LibreOffice or OpenOffice Calc) with the desired values is required.
Version Downloads Last updated
3.5.0 1,427,271 11/14/2020
3.4.11 342,856 7/14/2019
3.4.10 7,979 7/5/2019
3.4.9 515,771 4/1/2017
3.4.8 80,587 10/21/2016
3.4.7 4,619 10/9/2016
3.4.6 20,802 10/3/2016
3.4.5.1 6,026 9/26/2016
3.4.5 4,042 9/26/2016
3.4.4 339,371 4/26/2014
3.4.3 5,256 3/1/2014
3.4.2 2,219 2/22/2014
3.4.1 24,434 8/31/2013
3.4.0 28,474 7/27/2013
3.3.1 4,357 6/7/2013
3.3.0 7,007 5/18/2013
3.2.9 3,160 5/12/2013
1.0.0 5,361 4/24/2013

You can read the full list of changes at http://spreadsheetlight.com/version-history/ Note that source code is only available up to minor releases, meaning Major.Minor.0 versions.

Version 3.4.7
- Bug fix: Selecting worksheets one after another that has row properties (such as custom row heights) will no longer cause an error. (The error is actually in WriteSelectedWorksheet(), where the iteration was over a combined list of row properties indices and cell row indices, and the error occurs if there's a row properties row without any cells.)

Version 3.4.6
- Shared string unique count is now written in the file. This makes opening the resulting Excel file faster if there are large number of text strings. Set the property SLDocument.WriteUniqueSharedStringCount to false if the file opens with an error.
- Bug fix: Copy rows/columns now does not cause a runtime error (there were 2 separate cell stores and the wrong one was used, hence the reference index not found).

Version 3.4.5
- SmartTags is now removed from consideration (not so smart now, are you? ;). Which means the code is now ready for Open XML SDK 2.5! And yes, it now works with Open XML SDK 2.5 (have I mentioned that? lol)
- Internal cell storage structure is revamped. It used to be a 1-dimensional dictionary with a 2-dimensional key, but is now a 2-dimensional dictionary with a 1-dimensional key. Tech explanation: Dictionary<SLCellPoint, SLCell> to Dictionary<int, Dictionary<int, SLCell>>. This is done because a 1-dimensional key is at most 2^31 hash entries, which cannot contain the theoretical 1048576 (2^20) rows and 16384 (2^14) columns per worksheet supported by latest versions of Excel.
- Bug fix: plotting separate data series on charts as different chart types now works (your typical combination chart such as a column chart with lines)
- Breaking change: SLDocument.GetCells() now returns a Dictionary<int, Dictionary<int, SLCell>>

Version 3.4.4
- Bug fix: Formulas will be correctly changed when columns are deleted (when the formula involves said deleted columns).

Version 3.4.3
- Bug fix: Cell value/formula set on a shared cell formula base cell now works correctly. For example, setting on C3 when C3 holds a shared cell formula will work.
- Bug fix: Setting filter on worksheet now works correctly. It failed to sort before (basically also need to set underlying defined name _xlnm._FilterDatabase. Gawdiggitty.)

Version 3.4.2
- You can now get row/column grouping levels. See GetRowGroupLevel() and GetColumnGroupLevel() functions.
- You can now get a list of the shared cell formulas in the currently selected worksheet. See GetSharedCellFormulas() function.
- Cell formulas are now more correctly maintained when copying/inserting/deleting cells/rows/columns.
- Catered for situation where cell reference ranges aren't in top-left to bottom-right format (such as E1:A7). See SLTool for translating reference sequences to SLCellPointRange and vice versa. Don't worry, you probably wouldn't have known about this anyway...
- You can now draw borders on a cell range! And border grids! Try out the DrawBorder() and DrawBorderGrid() functions.
- You can now merge cells and set style/border properties at the same time! No more manual border drawing on merged cells! Woohoo! See MergeWorksheetCells() function overloads.
- You can now make SpreadsheetLight throw up, I mean, throw exceptions! When there are exceptions, of course. See ThrowExceptionsIfAny property. Not sure how much help this is though...
- You can now forcibly get a boolean value if it looks like it's a boolean but actually stored as text. See the GetCellValueAsBoolean() functions.
- Breaking change: SLCellFormula.Reference data type changed from string to List<SLCellPointRange> (but you shouldn't have been using this anyway...)
- Bug fix: The properties "count" and "uniqueCount" removed from shared strings table part. It seems a high number of shared strings will cause the calculation to render a corrupt file. See when writing the shared strings table for details.
- Bug fix: Outline (grouping) levels of rows and columns now limited to 0 to 7 (was allowed to go to 8 previously. See GroupRows() and GroupColumns() in RowColumnFunctions.cs)

Version 3.4.1
- Removed optional argument use (specifically IsStylish) so that developers using Visual Studio 2008 (.NET Framework 3.5) can still compile the source code.
- Optimised GetWorksheetStatistics(). It's now faster and less memory intensive.
- Bug fix: autofitting rows with a smaller initial height now correctly autofit to content
- Bug fix (?): SLStyle.MergeStyle() now takes on the new style object's format code regardless.