diff --git a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj index 7f22e1d..4012c76 100644 --- a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj @@ -135,6 +135,7 @@ + diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/CalcEngine.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/CalcEngine.cs index 7d93111..f646ddc 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/CalcEngine.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/CalcEngine.cs @@ -285,6 +285,7 @@ _fnTbl = new Dictionary(StringComparer.InvariantCultureIgnoreCase); // register built-in functions (and constants) + Is.Register(this); Logical.Register(this); MathTrig.Register(this); Text.Register(this); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Is.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Is.cs new file mode 100644 index 0000000..544f92e --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Is.cs @@ -0,0 +1,21 @@ +using System; +using System.Diagnostics; +using System.Collections.Generic; +using System.Text; + +namespace ClosedXML.Excel.CalcEngine +{ + internal static class Is + { + public static void Register(CalcEngine ce) + { + ce.RegisterFunction("ISBLANK", 1, IsBlank); + } + + static object IsBlank(List p) + { + var v = (string)p[0]; + return String.IsNullOrEmpty(v); + } + } +} diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj b/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj index b41afcb..f057b4d 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj +++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj @@ -180,6 +180,9 @@ Excel\CalcEngine\Functions\DateAndTime.cs + + Excel\CalcEngine\Functions\Is.cs + Excel\CalcEngine\Functions\Logical.cs diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj index 2e26442..dbc5325 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj @@ -114,6 +114,7 @@ + diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/IsTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/IsTests.cs new file mode 100644 index 0000000..2d98c68 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/IsTests.cs @@ -0,0 +1,28 @@ +using System; +using ClosedXML.Excel; +using NUnit.Framework; + +namespace ClosedXML_Tests.Excel.CalcEngine +{ + + [TestFixture] + public class IsTests + { + [Test] + public void IsBlank_true() + { + var ws = new XLWorkbook().AddWorksheet("Sheet"); + var actual = ws.Evaluate("=IsBlank(A1)"); + Assert.AreEqual(true, actual); + } + + [Test] + public void IsBlank_false() + { + var ws = new XLWorkbook().AddWorksheet("Sheet"); + ws.Cell("A1").Value = " "; + var actual = ws.Evaluate("=IsBlank(A1)"); + Assert.AreEqual(false, actual); + } + } +} \ No newline at end of file