ClosedXML System.Exception: Syntax error

6.2k views Asked by At

I am using ClosedXML to calculate values in excel sheet from user provided inputs and i am getting error on the cell containing following formula

IF(C2=1,VLOOKUP(D7,A15:D28,4),(IF(C2=2,VLOOKUP(D7,A33:D46,4),VLOOKUP(D7,F15:I28,4))))

On line:

lblResult.Text = worksheet.Cell("D8").Value;

Can you help me finding what's going wrong here?

Thanks in advance

Following is the stack trace Stack Trace:

[Exception: Syntax error.]
   ClosedXML.Excel.CalcEngine.CalcEngine.GetParameters() +223
   ClosedXML.Excel.CalcEngine.CalcEngine.ParseAtom() +141
   ClosedXML.Excel.CalcEngine.CalcEngine.ParseUnary() +77
   ClosedXML.Excel.CalcEngine.CalcEngine.ParsePower() +16
   ClosedXML.Excel.CalcEngine.CalcEngine.ParseMulDiv() +16
   ClosedXML.Excel.CalcEngine.CalcEngine.ParseAddSub() +16
   ClosedXML.Excel.CalcEngine.CalcEngine.ParseCompare() +16
   ClosedXML.Excel.CalcEngine.CalcEngine.Parse(String expression) +67
   ClosedXML.Excel.CalcEngine.ExpressionCache.get_Item(String expression) +140
   ClosedXML.Excel.CalcEngine.CalcEngine.Evaluate(String expression) +27
   ClosedXML.Excel.XLCell.get_Value() +411
   TestExcel.btnResult_Click(Object sender, EventArgs e) in f:\Projects\Generation Circuit\gencricuit\GenerationCircuit\TestExcel.aspx.cs:30
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628026
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
2

There are 2 answers

0
Raidri On BEST ANSWER

ClosedXML doesn't support the VLOOKUP function.

See the documentation for a list of supported functions.

0
Ogoniok On

You can use worksheet.Cell("D8").CachedValue It will show you the value which, according to the calculation result, is in the cell