EPPlus 7.0.0-preview2
EPPlus 7
Announcement: new license model from version 5
EPPlus has from this new major version changed license from LGPL to Polyform Noncommercial 1.0.0.
With the new license EPPlus is still free to use in some cases, but will require a commercial license to be used in a commercial business.
This is explained in more detail here.
Commercial licenses, which includes support, can be purchased at (https://www.epplussoftware.com/).
The source code of EPPlus has moved to a new github repository
LicenseContext parameter must be set
With the license change EPPlus has a new parameter that needs to be configured. If the LicenseContext is not set, EPPlus will throw a LicenseException (only in debug mode).
This is a simple configuration that can be set in a few alternative ways:
1. Via code
// If you are a commercial business and have
// purchased commercial licenses use the static property
// LicenseContext of the ExcelPackage class :
ExcelPackage.LicenseContext = LicenseContext.Commercial;
// If you use EPPlus in a noncommercial context
// according to the Polyform Noncommercial license:
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using(var package = new ExcelPackage(new FileInfo("MyWorkbook.xlsx")))
{
}
2. Via appSettings.json
{
{
"EPPlus": {
"ExcelPackage": {
"LicenseContext": "Commercial" //The license context used
}
}
}
}
3. Via app/web.config
<appSettings>
<!--The license context used-->
<add key="EPPlus:ExcelPackage.LicenseContext" value="NonCommercial" />
</appSettings>
4. Set the environment variable 'EPPlusLicenseContext'
This might be the easiest way of configuring this. Just as above, set the variable to Commercial or NonCommercial depending on your usage.
Important! The environment variable should be set at the user or process level.
New features in EPPlus 7 preview 1
- Calculation engine update to array formulas. https://github.com/EPPlusSoftware/EPPlus/wiki/EPPlus-7-Preview
- Support for calculating legacy / dynamic array formulas.
- Support for intersect operator.
- Support for Implicit intersection.
- Support for array parameters in functions.
- Better support for using the colon operator with functions.
- 21 new functions
Breaking Changes
The formula parser has changed significantly in EPPlus 7, requiring all custom functions that inherits from the ExcelFunction
class to be reviewed.
The ExcelFunction
class now exposes new properties used to handle array results and condition behaviour.
NamespacePrefix
- If the function requires a prefix when saved, for example "_xlfn." or "_xlfn._xlws."HasNormalArguments
a boolean indicating if the formula only has normal arguments. If false, theGetParameterInfo
method must be implemented. Default is true.ReturnsReference
- If true the function can return a reference to a range. Use theCreateAddressResult
to return the result with a reference. Returning a reference, will cause the dependency chain to check the address and will allow the colon operator to be used with the function.IsVolatile
- If the function returns different result when called with the same parameters. Default false.ArrayBehaviour
- If the function allows arrays as input in a parameter, resulting in an array output. Also see theGetArrayBehaviourConfig
method. MethodsCreateAddressResult
- Return the result with an range to a range.CreateDynamicArrayResult
- The result should be treated as a dynamic array.GetArrayBehaviourConfig
- Sets the index if the parameters that can be arrays. Also see theArrayBehaviour
property.The source code tokenizer now tokenize more detailed, tokenizing addresses.
The expression handling is totally rewritten and now uses reversed polish notation instead of group expressions.
Breaking Changes in version 6.
- All public references to System.Drawing.Common has been removed from EPPlus. See Breaking Changes in EPPlus 6.
- Static class 'FontSize' has splitted width and heights into two dictionaries. FontSizes are lazy-loaded when needed.
- ...and more, see https://epplussoftware.com/docs/6.0/articles/breakingchanges.html
Breaking Changes in version 5.
- The default behavior for the Worksheet collection base in .NET Framework has changed from 1 to 0. This is the same default behavior as in .NET core today.
- Pictures have changed the behavior as the oneCellAnchor tag is used instead of the twoCellAnchor tag with the editAs="oneCell".
Improved documentation
EPPlus 6 has a new web sample site available here: (https://samples.epplussoftware.com/) , Source code is available here: EPPlus.WebSamples There is also a new sample project for four different docker images, EPPlus.DockerSample EPPlus also has two separate sample projects for .NET Core and .NET Framework respectively. There is also an updated developer wiki. The work with improving the documentation will continue, feedback is highly appreciated!
No packages depend on EPPlus.
.NET Framework 3.5
- EPPlus.Interfaces (>= 6.1.1)
- EPPlus.System.Drawing (>= 6.1.1)
.NET Standard 2.1
- System.Text.Encoding.CodePages (>= 4.7.1)
- System.Security.Cryptography.Pkcs (>= 4.7.0)
- System.Drawing.Primitives (>= 4.3.0)
- Microsoft.IO.RecyclableMemoryStream (>= 2.2.1)
- Microsoft.Extensions.Configuration.Json (>= 3.1.30)
- EPPlus.System.Drawing (>= 6.1.1)
- EPPlus.Interfaces (>= 6.1.1)
.NET Standard 2.0
- System.Text.Encoding.CodePages (>= 4.7.1)
- System.Security.Cryptography.Pkcs (>= 4.7.0)
- System.Drawing.Primitives (>= 4.3.0)
- Microsoft.IO.RecyclableMemoryStream (>= 2.2.1)
- Microsoft.Extensions.Configuration.Json (>= 2.1.1)
- EPPlus.Interfaces (>= 6.1.1)
- EPPlus.System.Drawing (>= 6.1.1)
.NET 7.0
- System.Text.Encoding.CodePages (>= 7.0.0)
- Microsoft.IO.RecyclableMemoryStream (>= 2.2.1)
- System.Security.Cryptography.Pkcs (>= 7.0.2)
- EPPlus.Interfaces (>= 6.1.1)
- EPPlus.System.Drawing (>= 6.1.1)
- Microsoft.Extensions.Configuration.Json (>= 7.0.0)
.NET Framework 4.6.2
- EPPlus.Interfaces (>= 6.1.1)
- EPPlus.System.Drawing (>= 6.1.1)
- Microsoft.IO.RecyclableMemoryStream (>= 1.4.1)
.NET 6.0
- EPPlus.System.Drawing (>= 6.1.1)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0)
- EPPlus.Interfaces (>= 6.1.1)
- System.Security.Cryptography.Pkcs (>= 6.0.3)
- System.Text.Encoding.CodePages (>= 6.0.0)
- Microsoft.IO.RecyclableMemoryStream (>= 2.2.1)
Version | Downloads | Last updated |
---|---|---|
7.5.2 | 3 | 12/14/2024 |
7.5.1 | 6 | 11/26/2024 |
7.5.0 | 7 | 11/18/2024 |
7.4.2 | 7 | 11/02/2024 |
7.4.1 | 13 | 10/11/2024 |
7.4.0 | 8 | 10/02/2024 |
7.3.2 | 12 | 09/17/2024 |
7.3.1 | 9 | 09/06/2024 |
7.3.0 | 10 | 08/21/2024 |
7.2.2 | 12 | 07/25/2024 |
7.2.1 | 13 | 07/03/2024 |
7.2.0 | 15 | 06/22/2024 |
7.1.3 | 10 | 06/02/2024 |
7.1.2 | 12 | 04/27/2024 |
7.1.1 | 9 | 04/12/2024 |
7.1.0 | 11 | 04/14/2024 |
7.0.10 | 10 | 03/13/2024 |
7.0.9 | 11 | 02/18/2024 |
7.0.8 | 12 | 01/24/2024 |
7.0.7 | 9 | 01/22/2024 |
7.0.6 | 11 | 01/12/2024 |
7.0.5 | 15 | 01/05/2024 |
7.0.4 | 9 | 12/15/2023 |
7.0.3 | 12 | 12/06/2023 |
7.0.2 | 11 | 11/29/2023 |
7.0.1 | 18 | 11/09/2023 |
7.0.0 | 11 | 10/26/2023 |
7.0.0-rc1 | 12 | 10/04/2023 |
7.0.0-preview2 | 23 | 07/21/2023 |
7.0.0-preview1 | 30 | 05/24/2023 |
7.0.0-beta1 | 13 | 09/25/2023 |
6.2.19 | 13 | 04/14/2024 |
6.2.18 | 13 | 03/13/2024 |
6.2.17 | 12 | 02/19/2024 |
6.2.16 | 12 | 01/13/2024 |
6.2.15 | 11 | 12/17/2023 |
6.2.14 | 17 | 12/06/2023 |
6.2.13 | 11 | 11/29/2023 |
6.2.12 | 15 | 11/09/2023 |
6.2.11 | 7 | 10/26/2023 |
6.2.10 | 12 | 10/04/2023 |
6.2.9 | 13 | 09/14/2023 |
6.2.8 | 15 | 09/14/2023 |
6.2.7 | 27 | 08/28/2023 |
6.2.6 | 15 | 06/18/2023 |
6.2.5 | 13 | 06/18/2023 |
6.2.4 | 29 | 05/17/2023 |
6.2.3 | 18 | 05/30/2023 |
6.2.2 | 13 | 06/18/2023 |
6.2.1 | 18 | 05/17/2023 |
6.2.0 | 16 | 06/18/2023 |
6.1.3 | 11 | 09/08/2023 |
6.1.2 | 13 | 05/17/2023 |
6.1.1 | 39 | 12/11/2022 |
6.1.0 | 38 | 11/30/2022 |
6.0.8 | 1,835 | 09/27/2022 |
6.0.7 | 22 | 09/09/2022 |
6.0.6 | 54 | 08/24/2022 |
6.0.5 | 32 | 09/02/2022 |
6.0.4 | 41 | 08/26/2022 |
6.0.3 | 21 | 06/30/2022 |
6.0.2-beta | 45 | 08/23/2022 |
6.0.1-beta | 22 | 07/25/2022 |
6.0.0-beta | 19 | 09/03/2022 |
5.8.14 | 24 | 06/18/2023 |
5.8.13 | 23 | 09/07/2022 |
5.8.12 | 35 | 08/04/2022 |
5.8.11 | 42 | 08/13/2022 |
5.8.10 | 34 | 08/13/2022 |
5.8.9 | 41 | 08/13/2022 |
5.8.8 | 22 | 08/13/2022 |
5.8.7 | 37 | 09/07/2022 |
5.8.6 | 41 | 06/30/2022 |
5.8.5 | 32 | 08/24/2022 |
5.8.4 | 20 | 08/25/2022 |
5.8.3 | 20 | 09/07/2022 |
5.8.2 | 33 | 09/02/2022 |
5.8.1 | 53 | 08/23/2022 |
5.8.0 | 67 | 07/25/2022 |
5.7.5 | 50 | 09/07/2022 |
5.7.4 | 25 | 09/02/2022 |
5.7.3 | 50 | 09/11/2022 |
5.7.2 | 38 | 09/07/2022 |
5.7.1 | 22 | 09/02/2022 |
5.7.0 | 19 | 08/25/2022 |
5.6.4 | 19 | 08/23/2022 |
5.6.3 | 29 | 08/23/2022 |
5.6.2 | 69 | 09/04/2022 |
5.6.1 | 22 | 09/02/2022 |
5.6.0 | 25 | 09/10/2022 |
5.5.5 | 30 | 07/13/2022 |
5.5.4 | 35 | 09/08/2022 |
5.5.3 | 49 | 09/07/2022 |
5.5.2 | 41 | 06/28/2022 |
5.5.1 | 18 | 09/05/2022 |
5.5.0 | 17 | 09/08/2022 |
5.4.2 | 34 | 08/23/2022 |
5.4.1 | 21 | 09/07/2022 |
5.4.0 | 53 | 09/10/2022 |
5.3.2 | 46 | 08/24/2022 |
5.3.1 | 20 | 08/13/2022 |
5.3.0 | 40 | 08/13/2022 |
5.2.1 | 28 | 07/01/2022 |
5.2.0 | 38 | 08/13/2022 |
5.1.2 | 21 | 08/19/2022 |
5.1.1 | 30 | 07/03/2022 |
5.1.0 | 34 | 07/25/2022 |
5.0.4 | 20 | 08/13/2022 |
5.0.3 | 38 | 08/13/2022 |
5.0.2-rc | 35 | 08/13/2022 |
5.0.1-beta | 29 | 08/13/2022 |
5.0.0-beta | 52 | 08/13/2022 |
4.5.3.3 | 2,025 | 06/27/2022 |
4.5.3.2 | 31 | 08/13/2022 |
4.5.3.1 | 63 | 08/13/2022 |
4.5.3 | 37 | 08/13/2022 |
4.5.2.1 | 45 | 08/13/2022 |
4.5.2 | 30 | 07/15/2022 |
4.5.1 | 36 | 08/13/2022 |
4.1.1 | 69 | 08/13/2022 |
4.1.0 | 36 | 07/03/2022 |
4.0.5 | 40 | 08/19/2022 |
4.0.4 | 31 | 08/19/2022 |
4.0.3 | 23 | 08/22/2022 |
4.0.2 | 20 | 08/18/2022 |
4.0.1.1 | 27 | 08/18/2022 |