diff --git a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj index 193e78a..5f7d00c 100644 --- a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj @@ -147,8 +147,6 @@ - - diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Subtotals/Average.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Subtotals/Average.cs deleted file mode 100644 index 5d002fc..0000000 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Subtotals/Average.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace ClosedXML.Excel.CalcEngine.Functions.Subtotals -{ - class Average - { - public static Object GetSubtotal(List list) - { - var tally = new Tally(); - foreach (var e in list) - { - tally.Add(e); - } - return tally.Average(); - } - } -} diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Subtotals/Subtotal.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Subtotals/Subtotal.cs deleted file mode 100644 index 2b7e6ee..0000000 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Subtotals/Subtotal.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace ClosedXML.Excel.CalcEngine.Functions.Subtotals -{ - abstract class Subtotal - { - protected readonly List exprList; - - protected Subtotal(List list) - { - exprList = list; - } - public abstract Object Evaluate(); - - public static Object GetSubtotal(Int32 fId, List list) - { - - switch (fId) - { - case 1: - return Average.GetSubtotal(list); - default: - throw new ArgumentException("Function not supported."); - } - } - } -} diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Text.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Text.cs index dbd7ba4..dae361f 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Text.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Text.cs @@ -11,6 +11,8 @@ public static void Register(CalcEngine ce) { //ce.RegisterFunction("ASC Changes full-width (double-byte) English letters or katakana within a character string to half-width (single-byte) characters + ce.RegisterFunction("ASC", 1, Asc); + //ce.RegisterFunction("BAHTTEXT Converts a number to text, using the ß (baht) currency format ce.RegisterFunction("CHAR", 1, _Char); // Returns the character specified by the code number //ce.RegisterFunction("CLEAN Removes all nonprintable characters from text @@ -188,5 +190,10 @@ { return double.Parse((string)p[0], NumberStyles.Any, CultureInfo.InvariantCulture); } + + static object Asc(List p) + { + return (string)p[0]; + } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs index 4cd8dcf..408acd2 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs @@ -47,7 +47,7 @@ if (_style != null) return _style; - return _style = new XLStyle(this, Range.Worksheet.Workbook.GetStyleById(_styleCacheId)); + return _style = new XLStyle(this, Range.Worksheet.Workbook.GetStyleById(_styleCacheId), false); } private void SetStyle(IXLStyle styleToUse) { diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLBorder.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLBorder.cs index f8cebdf..23f29ca 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLBorder.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLBorder.cs @@ -25,7 +25,7 @@ { } - public XLBorder(IXLStylized container, IXLBorder defaultBorder) + public XLBorder(IXLStylized container, IXLBorder defaultBorder, Boolean useDefaultModify = true) { _container = container; if (defaultBorder == null) return; @@ -42,6 +42,23 @@ _diagonalBorderColor = new XLColor(defaultBorder.DiagonalBorderColor); _diagonalUp = defaultBorder.DiagonalUp; _diagonalDown = defaultBorder.DiagonalDown; + + if (useDefaultModify) + { + var d = defaultBorder as XLBorder; + BottomBorderColorModified = d.BottomBorderColorModified; + BottomBorderModified = d.BottomBorderModified; + DiagonalBorderColorModified = d.DiagonalBorderColorModified; + DiagonalBorderModified = d.DiagonalBorderModified; + DiagonalDownModified = d.DiagonalDownModified; + DiagonalUpModified = d.DiagonalUpModified; + LeftBorderColorModified = d.LeftBorderColorModified; + LeftBorderModified = d.LeftBorderModified; + RightBorderColorModified = d.RightBorderColorModified; + RightBorderModified = d.RightBorderModified; + TopBorderColorModified = d.TopBorderColorModified; + TopBorderModified = d.TopBorderModified; + } } #region IXLBorder Members diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFill.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFill.cs index d01c680..4eb318f 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFill.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFill.cs @@ -147,14 +147,21 @@ { } - public XLFill(IXLStylized container, IXLFill defaultFill = null) + public XLFill(IXLStylized container, IXLFill defaultFill = null, Boolean useDefaultModify = true) { _container = container; if (defaultFill == null) return; _patternType = defaultFill.PatternType; _patternColor = new XLColor(defaultFill.PatternColor); _patternBackgroundColor = new XLColor(defaultFill.PatternBackgroundColor); - PatternBackgroundColorModified = (defaultFill as XLFill).PatternBackgroundColorModified; + + if (useDefaultModify) + { + var d = defaultFill as XLFill; + PatternBackgroundColorModified = d.PatternBackgroundColorModified; + PatternColorModified = d.PatternColorModified; + PatternTypeModified = d.PatternTypeModified; + } } #endregion diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFont.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFont.cs index a363bec..be1463a 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFont.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLFont.cs @@ -22,7 +22,7 @@ { } - public XLFont(IXLStylized container, IXLFontBase defaultFont) + public XLFont(IXLStylized container, IXLFontBase defaultFont, Boolean useDefaultModify = true) { _container = container; if (defaultFont == null) return; @@ -37,6 +37,22 @@ _fontColor = new XLColor(defaultFont.FontColor); _fontName = defaultFont.FontName; _fontFamilyNumbering = defaultFont.FontFamilyNumbering; + + if (useDefaultModify) + { + var d = defaultFont as XLFont; + if (d == null) return; + BoldModified = d.BoldModified; + ItalicModified = d.ItalicModified; + UnderlineModified = d.UnderlineModified; + StrikethroughModified = d.StrikethroughModified; + VerticalAlignmentModified = d.VerticalAlignmentModified; + ShadowModified = d.ShadowModified; + FontSizeModified = d.FontSizeModified; + FontColorModified = d.FontColorModified; + FontNameModified = d.FontNameModified; + FontFamilyNumberingModified = d.FontFamilyNumberingModified; + } } #region IXLFont Members @@ -161,7 +177,15 @@ } } - public Boolean FontColorModified { get; set; } + private Boolean _fontColorModified; + public Boolean FontColorModified + { + get { return _fontColorModified; } + set + { + _fontColorModified = value; + } + } public XLColor FontColor { get { return _fontColor; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStyle.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStyle.cs index bb74c50..5f67dd7 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStyle.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStyle.cs @@ -1,17 +1,18 @@ -using System.Text; +using System; +using System.Text; namespace ClosedXML.Excel { internal class XLStyle : IXLStyle { - public XLStyle(IXLStylized container, IXLStyle initialStyle = null) + public XLStyle(IXLStylized container, IXLStyle initialStyle = null, Boolean useDefaultModify = true) { if (initialStyle != null) { - Font = new XLFont(container, initialStyle.Font); + Font = new XLFont(container, initialStyle.Font, useDefaultModify); Alignment = new XLAlignment(container, initialStyle.Alignment); - Border = new XLBorder(container, initialStyle.Border); - Fill = new XLFill(container, initialStyle.Fill); + Border = new XLBorder(container, initialStyle.Border, useDefaultModify); + Fill = new XLFill(container, initialStyle.Fill, useDefaultModify); NumberFormat = new XLNumberFormat(container, initialStyle.NumberFormat); Protection = new XLProtection(container, initialStyle.Protection); } diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs index 8812a53..b48a7e9 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs @@ -418,5 +418,14 @@ actual = XLWorkbook.EvaluateExpr(@"SumSq(3,4)"); Assert.AreEqual(25.0, actual); } + + [TestMethod] + public void Asc() + { + Object actual; + + actual = XLWorkbook.EvaluateExpr(@"Asc(""Text"")"); + Assert.AreEqual("Text", actual); + } } } diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx index 0081bfd..5702dc1 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx index 87f8d4f..1bb1b0b 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFDataBar.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFDataBar.xlsx index c6803d4..caf1410 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFDataBar.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFDataBar.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIconSet.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIconSet.xlsx index 8034b13..11a2bbf 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIconSet.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIconSet.xlsx Binary files differ