-
Notifications
You must be signed in to change notification settings - Fork 297
Breaking Changes in EPPlus 7
Jan Källman edited this page Oct 2, 2023
·
14 revisions
The formula parser has changed significantly in EPPlus 7, requiring all custom functions that are inherited from the ExcelFunction class to be reviewed.
The ExcelFunction class has changed, now exposes new properties used to handle array results and condition behaviour.
- The
Executemethod has changed signature changing theIEnumarablein the first parameter toIList. New signature is: Execute(IList, ParsingContext). -
ArgumentMinLength- Required. Minimum number of parameters supplied to the function. Suppling less parameters to the function will result in a #VALUE! error. -
NamespacePrefix- If the function requires a prefix when saved, for example "_xlfn." or "_xlfn._xlws." -
HasNormalArgumentsA Boolean indicating if the formula only has normal arguments. If false, theGetParameterInfomethod must be implemented. The default is true. -
ReturnsReference- If true the function can return a reference to a range. Use theCreateAddressResultto 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 a different result when called with the same parameters. The default is false. -
ArrayBehaviour- If the function allows arrays as input in a parameter, resulting in an array output. Also see theGetArrayBehaviourConfigmethod. - IFunctionModules.CustomCompilers has been removed and compilers can no longer be added. This has been replaced by ExcelFunction.ParameterInfo and ExcelFunction.ArrayBehaviour which configures the new behaviour of the formula calculation engine.
-
CalculateCollection- has been removed. EPPlus no long uses collections of FunctionArgument in this way. Use theInMemoryRangeclass instead. - Converting double's from strings in the formula parser will now use try to parse the string using the the CurrentCulture before trying the InvariantCulture.
- The default value of
ExcelCalculationOption.PrecisionAndRoundingStrategyin the formula calculation has been changed fromDotNettoExcel - The
ErrorHandlingFunctionclass has been removed. Use the ParametersInfo property with FunctionParameterInformation.IgnoreErrorInPreExecute instead.
-
CreateAddressResult- Returns the result with a reference 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 theArrayBehaviourproperty. The ExcelFunctionArgument class - The
GetAsRangeInfo(ParsingContext)has been removed. Use theValueAsRangeInfoproperty instead. - The
IsEnumerableOfFuncArgsandValueAsEnumerableOfFuncArgsproperties and has been removed. - The
SetExcelStateFlagandExcelStateFlagIsSetmethods has been removed. Misspelled propertyExcelIgnoreError.CalculatedColummhas been renamedCalculatedColumn
- The source code tokenizer now tokenizes in more detail, tokenizing addresses.
- The expression handling is totally rewritten and now uses reversed polish notation instead of an expression tree. This change affects internal classes only.
- The
CompileResultclass has moved to a new namespace: OfficeOpenXml.FormulaParsing.FormulaExpressions - Adding defined names referencing addresses will now be added as fixed addresses (i.e $A$1), unless the
allowRelativeAddressparameter of theExcelNamedRangeCollection.Addmethod is set to true.
-
ExcelWorksheet.AutofilterAddressis now obsolete. UseExcelWorksheet.Autofilter.Addressinstead.ExcelWorksheet.Autofilterwill now always be set instead of being null if no autofilter was present.
- Updating ConditionalFormatting via the XML DOM will not work as read and write is performed on load/save.
- The base class
ConditionalFormattingRuleand all derived classes no longer contain the Node property.
EPPlus Software AB - https://epplussoftware.com
- What is new in EPPlus 5+
- Breaking Changes in EPPlus 5
- Breaking Changes in EPPlus 6
- Breaking Changes in EPPlus 7
- Breaking Changes in EPPlus 8
- Addressing a worksheet
- Dimension/Used range
- Copying ranges/sheets
- Insert/Delete
- Filling ranges
- Sorting ranges
- Taking and skipping columns/rows
- Data validation
- Comments
- Freeze and Split Panes
- Header and Footer
- Hyperlinks
- Autofit columns
- Grouping and Ungrouping Rows and Columns
- Formatting and styling
- The ExcelRange.Text property
- Conditional formatting
- Using Themes
- Working with custom named table- or slicer- styles