nissl-lab / npoi

a .NET library that can read/write Office formats without Microsoft Office installed. No COM+, no interop.
Apache License 2.0
5.74k stars 1.43k forks source link

Support Create name of custom lambda function #818

Closed cuiliang closed 1 year ago

cuiliang commented 2 years ago

当添加一个Name,设置RefersToFormula为 _xlfn.LAMBDA(_xlpm.x,_xlpm.x^3)

会报错:

Specified named range '_xlpm.x' does not exist in the current workbook.

参考: Excel uses _xlfn. for formulas and _xlpm. for LET & LAMBDA arguments for backwards compatibility.

What are _xlfn and _xlpm in excel mean?


CallStack:

在 NPOI.SS.Formula.FormulaParser.ParseNonRange(Int32 savePointer) 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1076
   在 NPOI.SS.Formula.FormulaParser.ParseRangeExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 298
   在 NPOI.SS.Formula.FormulaParser.PercentFactor() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1831
   在 NPOI.SS.Formula.FormulaParser.PowerFactor() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1815
   在 NPOI.SS.Formula.FormulaParser.Term() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2248
   在 NPOI.SS.Formula.FormulaParser.AdditiveExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2343
   在 NPOI.SS.Formula.FormulaParser.ConcatExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2324
   在 NPOI.SS.Formula.FormulaParser.ComparisonExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2273
   在 NPOI.SS.Formula.FormulaParser.Arguments() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1799
   在 NPOI.SS.Formula.FormulaParser.Function(String name) 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1646
   在 NPOI.SS.Formula.FormulaParser.ParseRangeExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 298
   在 NPOI.SS.Formula.FormulaParser.PercentFactor() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1831
   在 NPOI.SS.Formula.FormulaParser.PowerFactor() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 1815
   在 NPOI.SS.Formula.FormulaParser.Term() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2248
   在 NPOI.SS.Formula.FormulaParser.AdditiveExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2343
   在 NPOI.SS.Formula.FormulaParser.ConcatExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2324
   在 NPOI.SS.Formula.FormulaParser.ComparisonExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2273
   在 NPOI.SS.Formula.FormulaParser.IntersectionExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2422
   在 NPOI.SS.Formula.FormulaParser.UnionExpression() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2399
   在 NPOI.SS.Formula.FormulaParser.Parse() 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 2387
   在 NPOI.SS.Formula.FormulaParser.Parse(String formula, IFormulaParsingWorkbook workbook, FormulaType formulaType, Int32 sheetIndex, Int32 rowIndex) 位置 C:\github\npoi\main\SS\Formula\FormulaParser.cs:行号 136
   在 NPOI.XSSF.UserModel.XSSFName.set_RefersToFormula(String value) 位置 C:\github\npoi\ooxml\XSSF\UserModel\XSSFName.cs:行号 184

需求来源请参考:https://getquicker.net/QA/Question/10631

tonyqus commented 2 years ago

https://poi.apache.org/components/spreadsheet/user-defined-functions.html