diff --git a/ClosedXML/ClosedXML/ClosedXML.sln b/ClosedXML/ClosedXML/ClosedXML.sln index e56d111..e8a7f7d 100644 --- a/ClosedXML/ClosedXML/ClosedXML.sln +++ b/ClosedXML/ClosedXML/ClosedXML.sln @@ -49,34 +49,38 @@ Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|Any CPU.ActiveCfg = Debug|x86 + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|Any CPU.Build.0 = Debug|Any CPU {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|Mixed Platforms.Build.0 = Debug|x86 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|x64.ActiveCfg = Debug|x64 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|x64.Build.0 = Debug|x64 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|x86.ActiveCfg = Debug|x86 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Debug|x86.Build.0 = Debug|x86 - {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|Any CPU.ActiveCfg = Release|x86 + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|Any CPU.Build.0 = Release|Any CPU {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|Mixed Platforms.ActiveCfg = Release|x86 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|Mixed Platforms.Build.0 = Release|x86 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|x64.ActiveCfg = Release|x64 {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|x64.Build.0 = Release|x64 - {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|x86.ActiveCfg = Release|x64 - {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|x86.Build.0 = Release|x64 - {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|Any CPU.ActiveCfg = Debug|x86 + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|x86.ActiveCfg = Release|Any CPU + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB}.Release|x86.Build.0 = Release|Any CPU + {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|Any CPU.Build.0 = Debug|Any CPU {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|Mixed Platforms.Build.0 = Debug|x86 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|x64.ActiveCfg = Debug|x64 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|x64.Build.0 = Debug|x64 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|x86.ActiveCfg = Debug|x86 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Debug|x86.Build.0 = Debug|x86 - {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|Any CPU.ActiveCfg = Release|x86 + {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|Any CPU.Build.0 = Release|Any CPU {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|Mixed Platforms.ActiveCfg = Release|x86 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|Mixed Platforms.Build.0 = Release|x86 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|x64.ActiveCfg = Release|x64 {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|x64.Build.0 = Release|x64 - {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|x86.ActiveCfg = Release|x64 - {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|x86.Build.0 = Release|x64 + {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|x86.ActiveCfg = Release|Any CPU + {03A518D0-1CB7-488E-861C-C4E782B27A46}.Release|x86.Build.0 = Release|Any CPU {5F43B12B-A900-40C6-9924-A0C0B032F791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5F43B12B-A900-40C6-9924-A0C0B032F791}.Debug|Any CPU.Build.0 = Debug|Any CPU {5F43B12B-A900-40C6-9924-A0C0B032F791}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -93,20 +97,22 @@ {5F43B12B-A900-40C6-9924-A0C0B032F791}.Release|x64.Build.0 = Release|x64 {5F43B12B-A900-40C6-9924-A0C0B032F791}.Release|x86.ActiveCfg = Release|Any CPU {5F43B12B-A900-40C6-9924-A0C0B032F791}.Release|x86.Build.0 = Release|Any CPU - {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|Any CPU.ActiveCfg = Debug|x86 + {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|Any CPU.Build.0 = Debug|Any CPU {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|Mixed Platforms.Build.0 = Debug|x86 {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|x64.ActiveCfg = Debug|x64 {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|x64.Build.0 = Debug|x64 {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|x86.ActiveCfg = Debug|x86 {E005997D-B192-461F-AA3E-44007A33A3DF}.Debug|x86.Build.0 = Debug|x86 - {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|Any CPU.ActiveCfg = Release|x86 + {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|Any CPU.Build.0 = Release|Any CPU {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|Mixed Platforms.ActiveCfg = Release|x86 {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|Mixed Platforms.Build.0 = Release|x86 {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|x64.ActiveCfg = Release|x64 {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|x64.Build.0 = Release|x64 - {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|x86.ActiveCfg = Release|x64 - {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|x86.Build.0 = Release|x64 + {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|x86.ActiveCfg = Release|Any CPU + {E005997D-B192-461F-AA3E-44007A33A3DF}.Release|x86.Build.0 = Release|Any CPU {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Debug|Any CPU.Build.0 = Debug|Any CPU {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 @@ -121,8 +127,8 @@ {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|Mixed Platforms.Build.0 = Release|x64 {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|x64.ActiveCfg = Release|x64 {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|x64.Build.0 = Release|x64 - {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|x86.ActiveCfg = Release|x86 - {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|x86.Build.0 = Release|x86 + {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|x86.ActiveCfg = Release|Any CPU + {BD5E6BFE-E837-4A35-BCA9-39667D873A20}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj index 9245108..caa2eea 100644 --- a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj @@ -145,6 +145,7 @@ + diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs index 38f6ab6..fa1190f 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs @@ -168,5 +168,10 @@ IXLRangeColumn Column(Int32 start, Int32 end); IXLRangeColumns Columns(String columns); + + /// + /// Adds a vertical page break after this column. + /// + IXLColumn AddVerticalPageBreak(); } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs index 82ef949..e90a926 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs @@ -109,6 +109,9 @@ IXLStyle Style { get; set; } - + /// + /// Adds a vertical page break after these columns. + /// + IXLColumns AddVerticalPageBreaks(); } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs index 4df22cc..677a53b 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs @@ -661,5 +661,13 @@ return retVal; } + /// + /// Adds a vertical page break after this column. + /// + public IXLColumn AddVerticalPageBreak() + { + Worksheet.PageSetup.AddVerticalPageBreak(this.ColumnNumber()); + return this; + } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs index d05f34b..afbf817 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs @@ -248,6 +248,14 @@ } } - + /// + /// Adds a vertical page break after this column. + /// + public IXLColumns AddVerticalPageBreaks() + { + foreach (var col in columns) + col.Worksheet.PageSetup.AddVerticalPageBreak(col.ColumnNumber()); + return this; + } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/EnumConverter.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/EnumConverter.cs new file mode 100644 index 0000000..4f1b858 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/EnumConverter.cs @@ -0,0 +1,797 @@ +using System; +using DocumentFormat.OpenXml.Spreadsheet; + +namespace ClosedXML.Excel +{ + internal static class EnumConverter + { + #region To OpenXml + public static UnderlineValues ToOpenXml(this XLFontUnderlineValues value) + { + switch (value) + { + case XLFontUnderlineValues.Double: + return UnderlineValues.Double; + case XLFontUnderlineValues.DoubleAccounting: + return UnderlineValues.DoubleAccounting; + case XLFontUnderlineValues.None: + return UnderlineValues.None; + case XLFontUnderlineValues.Single: + return UnderlineValues.Single; + case XLFontUnderlineValues.SingleAccounting: + return UnderlineValues.SingleAccounting; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static OrientationValues ToOpenXml(this XLPageOrientation value) + { + switch (value) + { + case XLPageOrientation.Default: + return OrientationValues.Default; + case XLPageOrientation.Landscape: + return OrientationValues.Landscape; + case XLPageOrientation.Portrait: + return OrientationValues.Portrait; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static VerticalAlignmentRunValues ToOpenXml(this XLFontVerticalTextAlignmentValues value) + { + switch (value) + { + case XLFontVerticalTextAlignmentValues.Baseline: + return VerticalAlignmentRunValues.Baseline; + case XLFontVerticalTextAlignmentValues.Subscript: + return VerticalAlignmentRunValues.Subscript; + case XLFontVerticalTextAlignmentValues.Superscript: + return VerticalAlignmentRunValues.Superscript; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static PatternValues ToOpenXml(this XLFillPatternValues value) + { + switch (value) + { + case XLFillPatternValues.DarkDown: + return PatternValues.DarkDown; + case XLFillPatternValues.DarkGray: + return PatternValues.DarkGray; + case XLFillPatternValues.DarkGrid: + return PatternValues.DarkGrid; + case XLFillPatternValues.DarkHorizontal: + return PatternValues.DarkHorizontal; + case XLFillPatternValues.DarkTrellis: + return PatternValues.DarkTrellis; + case XLFillPatternValues.DarkUp: + return PatternValues.DarkUp; + case XLFillPatternValues.DarkVertical: + return PatternValues.DarkVertical; + case XLFillPatternValues.Gray0625: + return PatternValues.Gray0625; + case XLFillPatternValues.Gray125: + return PatternValues.Gray125; + case XLFillPatternValues.LightDown: + return PatternValues.LightDown; + case XLFillPatternValues.LightGray: + return PatternValues.LightGray; + case XLFillPatternValues.LightGrid: + return PatternValues.LightGrid; + case XLFillPatternValues.LightHorizontal: + return PatternValues.LightHorizontal; + case XLFillPatternValues.LightTrellis: + return PatternValues.LightTrellis; + case XLFillPatternValues.LightUp: + return PatternValues.LightUp; + case XLFillPatternValues.LightVertical: + return PatternValues.LightVertical; + case XLFillPatternValues.MediumGray: + return PatternValues.MediumGray; + case XLFillPatternValues.None: + return PatternValues.None; + case XLFillPatternValues.Solid: + return PatternValues.Solid; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static BorderStyleValues ToOpenXml(this XLBorderStyleValues value) + { + switch (value) + { + case XLBorderStyleValues.DashDot: + return BorderStyleValues.DashDot; + case XLBorderStyleValues.DashDotDot: + return BorderStyleValues.DashDotDot; + case XLBorderStyleValues.Dashed: + return BorderStyleValues.Dashed; + case XLBorderStyleValues.Dotted: + return BorderStyleValues.Dotted; + case XLBorderStyleValues.Double: + return BorderStyleValues.Double; + case XLBorderStyleValues.Hair: + return BorderStyleValues.Hair; + case XLBorderStyleValues.Medium: + return BorderStyleValues.Medium; + case XLBorderStyleValues.MediumDashDot: + return BorderStyleValues.MediumDashDot; + case XLBorderStyleValues.MediumDashDotDot: + return BorderStyleValues.MediumDashDotDot; + case XLBorderStyleValues.MediumDashed: + return BorderStyleValues.MediumDashed; + case XLBorderStyleValues.None: + return BorderStyleValues.None; + case XLBorderStyleValues.SlantDashDot: + return BorderStyleValues.SlantDashDot; + case XLBorderStyleValues.Thick: + return BorderStyleValues.Thick; + case XLBorderStyleValues.Thin: + return BorderStyleValues.Thin; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static HorizontalAlignmentValues ToOpenXml(this XLAlignmentHorizontalValues value) + { + switch (value) + { + case XLAlignmentHorizontalValues.Center: + return HorizontalAlignmentValues.Center; + case XLAlignmentHorizontalValues.CenterContinuous: + return HorizontalAlignmentValues.CenterContinuous; + case XLAlignmentHorizontalValues.Distributed: + return HorizontalAlignmentValues.Distributed; + case XLAlignmentHorizontalValues.Fill: + return HorizontalAlignmentValues.Fill; + case XLAlignmentHorizontalValues.General: + return HorizontalAlignmentValues.General; + case XLAlignmentHorizontalValues.Justify: + return HorizontalAlignmentValues.Justify; + case XLAlignmentHorizontalValues.Left: + return HorizontalAlignmentValues.Left; + case XLAlignmentHorizontalValues.Right: + return HorizontalAlignmentValues.Right; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static VerticalAlignmentValues ToOpenXml(this XLAlignmentVerticalValues value) + { + switch (value) + { + case XLAlignmentVerticalValues.Bottom: + return VerticalAlignmentValues.Bottom; + case XLAlignmentVerticalValues.Center: + return VerticalAlignmentValues.Center; + case XLAlignmentVerticalValues.Distributed: + return VerticalAlignmentValues.Distributed; + case XLAlignmentVerticalValues.Justify: + return VerticalAlignmentValues.Justify; + case XLAlignmentVerticalValues.Top: + return VerticalAlignmentValues.Top; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static PageOrderValues ToOpenXml(this XLPageOrderValues value) + { + switch (value) + { + case XLPageOrderValues.DownThenOver: + return PageOrderValues.DownThenOver; + case XLPageOrderValues.OverThenDown: + return PageOrderValues.OverThenDown; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static CellCommentsValues ToOpenXml(this XLShowCommentsValues value) + { + switch (value) + { + case XLShowCommentsValues.AsDisplayed: + return CellCommentsValues.AsDisplayed; + case XLShowCommentsValues.AtEnd: + return CellCommentsValues.AtEnd; + case XLShowCommentsValues.None: + return CellCommentsValues.None; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static PrintErrorValues ToOpenXml(this XLPrintErrorValues value) + { + switch (value) + { + case XLPrintErrorValues.Blank: + return PrintErrorValues.Blank; + case XLPrintErrorValues.Dash: + return PrintErrorValues.Dash; + case XLPrintErrorValues.Displayed: + return PrintErrorValues.Displayed; + case XLPrintErrorValues.NA: + return PrintErrorValues.NA; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static CalculateModeValues ToOpenXml(this XLCalculateMode value) + { + switch (value) + { + case XLCalculateMode.Auto: + return CalculateModeValues.Auto; + case XLCalculateMode.AutoNoTable: + return CalculateModeValues.AutoNoTable; + case XLCalculateMode.Manual: + return CalculateModeValues.Manual; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static ReferenceModeValues ToOpenXml(this XLReferenceStyle value) + { + switch (value) + { + case XLReferenceStyle.R1C1: + return ReferenceModeValues.R1C1; + case XLReferenceStyle.A1: + return ReferenceModeValues.A1; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static uint ToOpenXml(this XLAlignmentReadingOrderValues value) + { + switch (value) + { + case XLAlignmentReadingOrderValues.ContextDependent: + return 0; + case XLAlignmentReadingOrderValues.LeftToRight: + return 1; + case XLAlignmentReadingOrderValues.RightToLeft: + return 2; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static TotalsRowFunctionValues ToOpenXml(this XLTotalsRowFunction value) + { + switch (value) + { + case XLTotalsRowFunction.None: + return TotalsRowFunctionValues.None; + case XLTotalsRowFunction.Sum: + return TotalsRowFunctionValues.Sum; + case XLTotalsRowFunction.Minimum: + return TotalsRowFunctionValues.Minimum; + case XLTotalsRowFunction.Maximum: + return TotalsRowFunctionValues.Maximum; + case XLTotalsRowFunction.Average: + return TotalsRowFunctionValues.Average; + case XLTotalsRowFunction.Count: + return TotalsRowFunctionValues.Count; + case XLTotalsRowFunction.CountNumbers: + return TotalsRowFunctionValues.CountNumbers; + case XLTotalsRowFunction.StandardDeviation: + return TotalsRowFunctionValues.StandardDeviation; + case XLTotalsRowFunction.Variance: + return TotalsRowFunctionValues.Variance; + case XLTotalsRowFunction.Custom: + return TotalsRowFunctionValues.Custom; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static DataValidationValues ToOpenXml(this XLAllowedValues value) + { + switch (value) + { + case XLAllowedValues.AnyValue: + return DataValidationValues.None; + case XLAllowedValues.Custom: + return DataValidationValues.Custom; + case XLAllowedValues.Date: + return DataValidationValues.Date; + case XLAllowedValues.Decimal: + return DataValidationValues.Decimal; + case XLAllowedValues.List: + return DataValidationValues.List; + case XLAllowedValues.TextLength: + return DataValidationValues.TextLength; + case XLAllowedValues.Time: + return DataValidationValues.Time; + case XLAllowedValues.WholeNumber: + return DataValidationValues.Whole; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static DataValidationErrorStyleValues ToOpenXml(this XLErrorStyle value) + { + switch (value) + { + case XLErrorStyle.Information: + return DataValidationErrorStyleValues.Information; + case XLErrorStyle.Warning: + return DataValidationErrorStyleValues.Warning; + case XLErrorStyle.Stop: + return DataValidationErrorStyleValues.Stop; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static DataValidationOperatorValues ToOpenXml(this XLOperator value) + { + switch (value) + { + case XLOperator.Between: + return DataValidationOperatorValues.Between; + case XLOperator.EqualOrGreaterThan: + return DataValidationOperatorValues.GreaterThanOrEqual; + case XLOperator.EqualOrLessThan: + return DataValidationOperatorValues.LessThanOrEqual; + case XLOperator.EqualTo: + return DataValidationOperatorValues.Equal; + case XLOperator.GreaterThan: + return DataValidationOperatorValues.GreaterThan; + case XLOperator.LessThan: + return DataValidationOperatorValues.LessThan; + case XLOperator.NotBetween: + return DataValidationOperatorValues.NotBetween; + case XLOperator.NotEqualTo: + return DataValidationOperatorValues.NotEqual; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static SheetStateValues ToOpenXml(this XLWorksheetVisibility value) + { + switch (value) + { + case XLWorksheetVisibility.Visible: + return SheetStateValues.Visible; + case XLWorksheetVisibility.Hidden: + return SheetStateValues.Hidden; + case XLWorksheetVisibility.VeryHidden: + return SheetStateValues.VeryHidden; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + #endregion + #region To ClosedXml + public static XLFontUnderlineValues ToClosedXml(this UnderlineValues value) + { + switch (value) + { + case UnderlineValues.Double: + return XLFontUnderlineValues.Double; + case UnderlineValues.DoubleAccounting: + return XLFontUnderlineValues.DoubleAccounting; + case UnderlineValues.None: + return XLFontUnderlineValues.None; + case UnderlineValues.Single: + return XLFontUnderlineValues.Single; + case UnderlineValues.SingleAccounting: + return XLFontUnderlineValues.SingleAccounting; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLPageOrientation ToClosedXml(this OrientationValues value) + { + switch (value) + { + case OrientationValues.Default: + return XLPageOrientation.Default; + case OrientationValues.Landscape: + return XLPageOrientation.Landscape; + case OrientationValues.Portrait: + return XLPageOrientation.Portrait; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLFontVerticalTextAlignmentValues ToClosedXml(this VerticalAlignmentRunValues value) + { + switch (value) + { + case VerticalAlignmentRunValues.Baseline: + return XLFontVerticalTextAlignmentValues.Baseline; + case VerticalAlignmentRunValues.Subscript: + return XLFontVerticalTextAlignmentValues.Subscript; + case VerticalAlignmentRunValues.Superscript: + return XLFontVerticalTextAlignmentValues.Superscript; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLFillPatternValues ToClosedXml(this PatternValues value) + { + switch (value) + { + case PatternValues.DarkDown: + return XLFillPatternValues.DarkDown; + case PatternValues.DarkGray: + return XLFillPatternValues.DarkGray; + case PatternValues.DarkGrid: + return XLFillPatternValues.DarkGrid; + case PatternValues.DarkHorizontal: + return XLFillPatternValues.DarkHorizontal; + case PatternValues.DarkTrellis: + return XLFillPatternValues.DarkTrellis; + case PatternValues.DarkUp: + return XLFillPatternValues.DarkUp; + case PatternValues.DarkVertical: + return XLFillPatternValues.DarkVertical; + case PatternValues.Gray0625: + return XLFillPatternValues.Gray0625; + case PatternValues.Gray125: + return XLFillPatternValues.Gray125; + case PatternValues.LightDown: + return XLFillPatternValues.LightDown; + case PatternValues.LightGray: + return XLFillPatternValues.LightGray; + case PatternValues.LightGrid: + return XLFillPatternValues.LightGrid; + case PatternValues.LightHorizontal: + return XLFillPatternValues.LightHorizontal; + case PatternValues.LightTrellis: + return XLFillPatternValues.LightTrellis; + case PatternValues.LightUp: + return XLFillPatternValues.LightUp; + case PatternValues.LightVertical: + return XLFillPatternValues.LightVertical; + case PatternValues.MediumGray: + return XLFillPatternValues.MediumGray; + case PatternValues.None: + return XLFillPatternValues.None; + case PatternValues.Solid: + return XLFillPatternValues.Solid; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLBorderStyleValues ToClosedXml(this BorderStyleValues value) + { + switch (value) + { + case BorderStyleValues.DashDot: + return XLBorderStyleValues.DashDot; + case BorderStyleValues.DashDotDot: + return XLBorderStyleValues.DashDotDot; + case BorderStyleValues.Dashed: + return XLBorderStyleValues.Dashed; + case BorderStyleValues.Dotted: + return XLBorderStyleValues.Dotted; + case BorderStyleValues.Double: + return XLBorderStyleValues.Double; + case BorderStyleValues.Hair: + return XLBorderStyleValues.Hair; + case BorderStyleValues.Medium: + return XLBorderStyleValues.Medium; + case BorderStyleValues.MediumDashDot: + return XLBorderStyleValues.MediumDashDot; + case BorderStyleValues.MediumDashDotDot: + return XLBorderStyleValues.MediumDashDotDot; + case BorderStyleValues.MediumDashed: + return XLBorderStyleValues.MediumDashed; + case BorderStyleValues.None: + return XLBorderStyleValues.None; + case BorderStyleValues.SlantDashDot: + return XLBorderStyleValues.SlantDashDot; + case BorderStyleValues.Thick: + return XLBorderStyleValues.Thick; + case BorderStyleValues.Thin: + return XLBorderStyleValues.Thin; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLAlignmentHorizontalValues ToClosedXml(this HorizontalAlignmentValues value) + { + switch (value) + { + case HorizontalAlignmentValues.Center: + return XLAlignmentHorizontalValues.Center; + case HorizontalAlignmentValues.CenterContinuous: + return XLAlignmentHorizontalValues.CenterContinuous; + case HorizontalAlignmentValues.Distributed: + return XLAlignmentHorizontalValues.Distributed; + case HorizontalAlignmentValues.Fill: + return XLAlignmentHorizontalValues.Fill; + case HorizontalAlignmentValues.General: + return XLAlignmentHorizontalValues.General; + case HorizontalAlignmentValues.Justify: + return XLAlignmentHorizontalValues.Justify; + case HorizontalAlignmentValues.Left: + return XLAlignmentHorizontalValues.Left; + case HorizontalAlignmentValues.Right: + return XLAlignmentHorizontalValues.Right; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLAlignmentVerticalValues ToClosedXml(this VerticalAlignmentValues value) + { + switch (value) + { + case VerticalAlignmentValues.Bottom: + return XLAlignmentVerticalValues.Bottom; + case VerticalAlignmentValues.Center: + return XLAlignmentVerticalValues.Center; + case VerticalAlignmentValues.Distributed: + return XLAlignmentVerticalValues.Distributed; + case VerticalAlignmentValues.Justify: + return XLAlignmentVerticalValues.Justify; + case VerticalAlignmentValues.Top: + return XLAlignmentVerticalValues.Top; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLPageOrderValues ToClosedXml(this PageOrderValues value) + { + switch (value) + { + case PageOrderValues.DownThenOver: + return XLPageOrderValues.DownThenOver; + case PageOrderValues.OverThenDown: + return XLPageOrderValues.OverThenDown; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLShowCommentsValues ToClosedXml(this CellCommentsValues value) + { + switch (value) + { + case CellCommentsValues.AsDisplayed: + return XLShowCommentsValues.AsDisplayed; + case CellCommentsValues.AtEnd: + return XLShowCommentsValues.AtEnd; + case CellCommentsValues.None: + return XLShowCommentsValues.None; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLPrintErrorValues ToClosedXml(this PrintErrorValues value) + { + switch (value) + { + case PrintErrorValues.Blank: + return XLPrintErrorValues.Blank; + case PrintErrorValues.Dash: + return XLPrintErrorValues.Dash; + case PrintErrorValues.Displayed: + return XLPrintErrorValues.Displayed; + case PrintErrorValues.NA: + return XLPrintErrorValues.NA; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLCalculateMode ToClosedXml(this CalculateModeValues value) + { + switch (value) + { + case CalculateModeValues.Auto: + return XLCalculateMode.Auto; + case CalculateModeValues.AutoNoTable: + return XLCalculateMode.AutoNoTable; + case CalculateModeValues.Manual: + return XLCalculateMode.Manual; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLReferenceStyle ToClosedXml(this ReferenceModeValues value) + { + switch (value) + { + case ReferenceModeValues.R1C1: + return XLReferenceStyle.R1C1; + case ReferenceModeValues.A1: + return XLReferenceStyle.A1; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLAlignmentReadingOrderValues ToClosedXml(this uint value) + { + switch (value) + { + case 0: + return XLAlignmentReadingOrderValues.ContextDependent; + case 1: + return XLAlignmentReadingOrderValues.LeftToRight; + case 2: + return XLAlignmentReadingOrderValues.RightToLeft; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLTotalsRowFunction ToClosedXml(this TotalsRowFunctionValues value) + { + switch (value) + { + case TotalsRowFunctionValues.None: + return XLTotalsRowFunction.None; + case TotalsRowFunctionValues.Sum: + return XLTotalsRowFunction.Sum; + case TotalsRowFunctionValues.Minimum: + return XLTotalsRowFunction.Minimum; + case TotalsRowFunctionValues.Maximum: + return XLTotalsRowFunction.Maximum; + case TotalsRowFunctionValues.Average: + return XLTotalsRowFunction.Average; + case TotalsRowFunctionValues.Count: + return XLTotalsRowFunction.Count; + case TotalsRowFunctionValues.CountNumbers: + return XLTotalsRowFunction.CountNumbers; + case TotalsRowFunctionValues.StandardDeviation: + return XLTotalsRowFunction.StandardDeviation; + case TotalsRowFunctionValues.Variance: + return XLTotalsRowFunction.Variance; + case TotalsRowFunctionValues.Custom: + return XLTotalsRowFunction.Custom; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLAllowedValues ToClosedXml(this DataValidationValues value) + { + switch (value) + { + case DataValidationValues.None: + return XLAllowedValues.AnyValue; + case DataValidationValues.Custom: + return XLAllowedValues.Custom; + case DataValidationValues.Date: + return XLAllowedValues.Date; + case DataValidationValues.Decimal: + return XLAllowedValues.Decimal; + case DataValidationValues.List: + return XLAllowedValues.List; + case DataValidationValues.TextLength: + return XLAllowedValues.TextLength; + case DataValidationValues.Time: + return XLAllowedValues.Time; + case DataValidationValues.Whole: + return XLAllowedValues.WholeNumber; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLErrorStyle ToClosedXml(this DataValidationErrorStyleValues value) + { + switch (value) + { + case DataValidationErrorStyleValues.Information: + return XLErrorStyle.Information; + case DataValidationErrorStyleValues.Warning: + return XLErrorStyle.Warning; + case DataValidationErrorStyleValues.Stop: + return XLErrorStyle.Stop; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLOperator ToClosedXml(this DataValidationOperatorValues value) + { + switch (value) + { + case DataValidationOperatorValues.Between: + return XLOperator.Between; + case DataValidationOperatorValues.GreaterThanOrEqual: + return XLOperator.EqualOrGreaterThan; + case DataValidationOperatorValues.LessThanOrEqual: + return XLOperator.EqualOrLessThan; + case DataValidationOperatorValues.Equal: + return XLOperator.EqualTo; + case DataValidationOperatorValues.GreaterThan: + return XLOperator.GreaterThan; + case DataValidationOperatorValues.LessThan: + return XLOperator.LessThan; + case DataValidationOperatorValues.NotBetween: + return XLOperator.NotBetween; + case DataValidationOperatorValues.NotEqual: + return XLOperator.NotEqualTo; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + public static XLWorksheetVisibility ToClosedXml(this SheetStateValues value) + { + switch (value) + { + case SheetStateValues.Visible: + return XLWorksheetVisibility.Visible; + case SheetStateValues.Hidden: + return XLWorksheetVisibility.Hidden; + case SheetStateValues.VeryHidden: + return XLWorksheetVisibility.VeryHidden; + #region default + default: + throw new ApplicationException("Not implemented value!"); + #endregion + } + } + #endregion + } +} \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs index bf3cf56..a8c6061 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs @@ -310,5 +310,12 @@ IXLColor TabColor { get; set; } IXLWorksheet SetTabColor(IXLColor color); + + Boolean TabSelected { get; set; } + Boolean TabActive { get; set; } + + IXLWorksheet SetTabSelected(); IXLWorksheet SetTabSelected(Boolean value); + IXLWorksheet SetTabActive(); IXLWorksheet SetTabActive(Boolean value); + } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs index 26de988..9f7b4d8 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -933,7 +933,16 @@ public IXLRange RangeUsed() { - return Worksheet.Range(this.FirstCellUsed(), this.LastCellUsed()); + var firstCell = FirstCellUsed(); + if (firstCell == null) + { + return null; + } + else + { + var lastCell = LastCellUsed(); + return Worksheet.Range(firstCell, lastCell); + } } public Boolean ShareString diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs index d5ce2cd..196ecad 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs @@ -171,5 +171,10 @@ IXLRangeRow Row(Int32 start, Int32 end); IXLRangeRows Rows(String columns); + + /// + /// Adds a horizontal page break after this row. + /// + IXLRow AddHorizontalPageBreak(); } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRows.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRows.cs index 13ae711..9c08ff5 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRows.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRows.cs @@ -109,6 +109,9 @@ IXLStyle Style { get; set; } - + /// + /// Adds a horizontal page break after these rows. + /// + IXLRows AddHorizontalPageBreaks(); } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs index b0b45c4..063d4c5 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs @@ -702,5 +702,11 @@ } return retVal; } + + public IXLRow AddHorizontalPageBreak() + { + Worksheet.PageSetup.AddHorizontalPageBreak(this.RowNumber()); + return this; + } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRows.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRows.cs index 8359e42..b3565c1 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRows.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRows.cs @@ -247,6 +247,13 @@ } } - + public IXLRows AddHorizontalPageBreaks() + { + foreach (var row in rows) + { + row.Worksheet.PageSetup.AddHorizontalPageBreak(row.RowNumber()); + } + return this; + } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs index b59cebd..66fc193 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs @@ -24,7 +24,6 @@ Worksheets = new XLWorksheets(this); NamedRanges = new XLNamedRanges(this); CustomProperties = new XLCustomProperties(this); - PopulateEnums(); Style = new XLStyle(null, DefaultStyle); RowHeight = DefaultRowHeight; ColumnWidth = DefaultColumnWidth; diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index c7e57d7..d246ad8 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -74,13 +74,13 @@ var referenceMode = dSpreadsheet.WorkbookPart.Workbook.CalculationProperties.ReferenceMode; if (referenceMode != null) { - ReferenceStyle = referenceModeValues.Single(p => p.Value == referenceMode.Value).Key; + ReferenceStyle = referenceMode.Value.ToClosedXml(); } var calculateMode = dSpreadsheet.WorkbookPart.Workbook.CalculationProperties.CalculationMode; if (calculateMode != null) { - CalculateMode = calculateModeValues.Single(p => p.Value == calculateMode.Value).Key; + CalculateMode = calculateMode.Value.ToClosedXml(); } if (dSpreadsheet.ExtendedFilePropertiesPart.Properties.Elements().Count() > 0) @@ -114,8 +114,9 @@ ws.RelId = dSheet.Id; ws.SheetId = (Int32)dSheet.SheetId.Value; + if (dSheet.State != null) - ws.Visibility = sheetStateValues.Single(p => p.Value == dSheet.State).Key; + ws.Visibility = dSheet.State.Value.ToClosedXml(); var sheetFormatProperties = worksheetPart.Worksheet.SheetFormatProperties; if (sheetFormatProperties != null) @@ -373,7 +374,7 @@ { var tableColumn = (TableColumn)column; if (tableColumn.TotalsRowFunction != null) - xlTable.Field(tableColumn.Name.Value).TotalsRowFunction = totalsRowFunctionValues.Single(p => p.Value == tableColumn.TotalsRowFunction.Value).Key; + xlTable.Field(tableColumn.Name.Value).TotalsRowFunction = tableColumn.TotalsRowFunction.Value.ToClosedXml(); if (tableColumn.TotalsRowFormula != null) xlTable.Field(tableColumn.Name.Value).TotalsRowFormulaA1 = tableColumn.TotalsRowFormula.Text; @@ -408,6 +409,11 @@ } var workbook = (Workbook)dSpreadsheet.WorkbookPart.Workbook; + + var workbookView = (WorkbookView)workbook.BookViews.FirstOrDefault(); + if (workbookView != null && workbookView.ActiveTab != null) + Worksheet((Int32)(workbookView.ActiveTab.Value + 1)).SetTabActive(); + if (workbook.DefinedNames != null) { foreach (DefinedName definedName in workbook.DefinedNames) @@ -528,9 +534,9 @@ if (dvs.Prompt != null) dvt.InputMessage = dvs.Prompt; if (dvs.ErrorTitle != null) dvt.ErrorTitle = dvs.ErrorTitle; if (dvs.Error != null) dvt.ErrorMessage = dvs.Error; - if (dvs.ErrorStyle != null) dvt.ErrorStyle = dataValidationErrorStyleValues.Single(p => p.Value == dvs.ErrorStyle).Key; - if (dvs.Type != null) dvt.AllowedValues = dataValidationValues.Single(p => p.Value == dvs.Type).Key; - if (dvs.Operator != null) dvt.Operator = dataValidationOperatorValues.Single(p => p.Value == dvs.Operator).Key; + if (dvs.ErrorStyle != null) dvt.ErrorStyle = dvs.ErrorStyle.Value.ToClosedXml(); + if (dvs.Type != null) dvt.AllowedValues = dvs.Type.Value.ToClosedXml(); + if (dvs.Operator != null) dvt.Operator = dvs.Operator.Value.ToClosedXml(); if (dvs.Formula1 != null) dvt.MinValue = dvs.Formula1.Text; if (dvs.Formula2 != null) dvt.MaxValue = dvs.Formula2.Text; } @@ -679,17 +685,17 @@ ws.PageSetup.PagesTall = Int32.Parse(pageSetup.FitToHeight.InnerText); } if (pageSetup.PageOrder != null) - ws.PageSetup.PageOrder = pageOrderValues.Single(p => p.Value == pageSetup.PageOrder).Key; + ws.PageSetup.PageOrder = pageSetup.PageOrder.Value.ToClosedXml(); if (pageSetup.Orientation != null) - ws.PageSetup.PageOrientation = pageOrientationValues.Single(p => p.Value == pageSetup.Orientation).Key; + ws.PageSetup.PageOrientation = pageSetup.Orientation.Value.ToClosedXml(); if (pageSetup.BlackAndWhite != null) ws.PageSetup.BlackAndWhite = pageSetup.BlackAndWhite; if (pageSetup.Draft != null) ws.PageSetup.DraftQuality = pageSetup.Draft; if (pageSetup.CellComments != null) - ws.PageSetup.ShowComments = showCommentsValues.Single(sc => sc.Value == pageSetup.CellComments).Key; + ws.PageSetup.ShowComments = pageSetup.CellComments.Value.ToClosedXml(); if (pageSetup.Errors != null) - ws.PageSetup.PrintErrorValue = printErrorValues.Single(p => p.Value == pageSetup.Errors).Key; + ws.PageSetup.PrintErrorValue = pageSetup.Errors.Value.ToClosedXml(); if (pageSetup.HorizontalDpi != null) ws.PageSetup.HorizontalDpi = (Int32)pageSetup.HorizontalDpi.Value; if (pageSetup.VerticalDpi != null) ws.PageSetup.VerticalDpi = (Int32)pageSetup.VerticalDpi.Value; if (pageSetup.FirstPageNumber != null) ws.PageSetup.FirstPageNumber = Int32.Parse(pageSetup.FirstPageNumber.InnerText); @@ -747,6 +753,7 @@ if (sheetView.ShowRuler != null) ws.ShowRuler = sheetView.ShowRuler.Value; if (sheetView.ShowWhiteSpace != null) ws.ShowWhiteSpace = sheetView.ShowWhiteSpace.Value; if (sheetView.ShowZeros != null) ws.ShowZeros = sheetView.ShowZeros.Value; + if (sheetView.TabSelected != null) ws.TabSelected = sheetView.TabSelected.Value; var pane = (Pane)sheetView.Elements().FirstOrDefault(); if (pane != null) @@ -841,7 +848,7 @@ if (fill.PatternFill != null) { if (fill.PatternFill.PatternType != null) - xlStylized.InnerStyle.Fill.PatternType = fillPatternValues.Single(p => p.Value == fill.PatternFill.PatternType).Key; + xlStylized.InnerStyle.Fill.PatternType = fill.PatternFill.PatternType.Value.ToClosedXml(); var fgColor = GetColor(fill.PatternFill.ForegroundColor); if (fgColor.HasValue) xlStylized.InnerStyle.Fill.PatternColor = fgColor; @@ -861,7 +868,7 @@ if (alignment != null) { if (alignment.Horizontal != null) - xlStylized.InnerStyle.Alignment.Horizontal = alignmentHorizontalValues.Single(a => a.Value == alignment.Horizontal).Key; + xlStylized.InnerStyle.Alignment.Horizontal = alignment.Horizontal.Value.ToClosedXml(); if (alignment.Indent != null) xlStylized.InnerStyle.Alignment.Indent = Int32.Parse(alignment.Indent.ToString()); if (alignment.JustifyLastLine != null) @@ -875,7 +882,7 @@ if (alignment.TextRotation != null) xlStylized.InnerStyle.Alignment.TextRotation = (Int32)alignment.TextRotation.Value; if (alignment.Vertical != null) - xlStylized.InnerStyle.Alignment.Vertical = alignmentVerticalValues.Single(a => a.Value == alignment.Vertical).Key; + xlStylized.InnerStyle.Alignment.Vertical = alignment.Vertical.Value.ToClosedXml(); if (alignment.WrapText !=null) xlStylized.InnerStyle.Alignment.WrapText = alignment.WrapText; } @@ -892,7 +899,7 @@ if (bottomBorder != null) { if (bottomBorder.Style != null) - xlStylized.InnerStyle.Border.BottomBorder = borderStyleValues.Single(b => b.Value == bottomBorder.Style.Value).Key; + xlStylized.InnerStyle.Border.BottomBorder = bottomBorder.Style.Value.ToClosedXml(); var bottomBorderColor = GetColor(bottomBorder.Color); if (bottomBorderColor.HasValue) @@ -902,7 +909,7 @@ if (topBorder != null) { if (topBorder.Style != null) - xlStylized.InnerStyle.Border.TopBorder = borderStyleValues.Single(b => b.Value == topBorder.Style.Value).Key; + xlStylized.InnerStyle.Border.TopBorder = topBorder.Style.Value.ToClosedXml(); var topBorderColor = GetColor(topBorder.Color); if (topBorderColor.HasValue) xlStylized.InnerStyle.Border.TopBorderColor = topBorderColor; @@ -911,7 +918,7 @@ if (leftBorder != null) { if (leftBorder.Style != null) - xlStylized.InnerStyle.Border.LeftBorder = borderStyleValues.Single(b => b.Value == leftBorder.Style.Value).Key; + xlStylized.InnerStyle.Border.LeftBorder = leftBorder.Style.Value.ToClosedXml(); var leftBorderColor = GetColor(leftBorder.Color); if (leftBorderColor.HasValue) xlStylized.InnerStyle.Border.LeftBorderColor = leftBorderColor; @@ -920,7 +927,7 @@ if (rightBorder != null) { if (rightBorder.Style != null) - xlStylized.InnerStyle.Border.RightBorder = borderStyleValues.Single(b => b.Value == rightBorder.Style.Value).Key; + xlStylized.InnerStyle.Border.RightBorder = rightBorder.Style.Value.ToClosedXml(); var rightBorderColor = GetColor(rightBorder.Color); if (rightBorderColor.HasValue) xlStylized.InnerStyle.Border.RightBorderColor = rightBorderColor; @@ -929,7 +936,7 @@ if (diagonalBorder != null) { if (diagonalBorder.Style != null) - xlStylized.InnerStyle.Border.DiagonalBorder = borderStyleValues.Single(b => b.Value == diagonalBorder.Style.Value).Key; + xlStylized.InnerStyle.Border.DiagonalBorder = diagonalBorder.Style.Value.ToClosedXml(); var diagonalBorderColor = GetColor(diagonalBorder.Color); if (diagonalBorderColor.HasValue) xlStylized.InnerStyle.Border.DiagonalBorderColor = diagonalBorderColor; @@ -972,14 +979,14 @@ if (font.Underline != null) if (font.Underline.Val != null) - xlStylized.InnerStyle.Font.Underline = underlineValuesList.Single(u => u.Value == ((Underline)font.Underline).Val).Key; + xlStylized.InnerStyle.Font.Underline = ((Underline)font.Underline).Val.Value.ToClosedXml(); else xlStylized.InnerStyle.Font.Underline = XLFontUnderlineValues.Single; if (font.VerticalTextAlignment != null) if (font.VerticalTextAlignment.Val != null) - xlStylized.InnerStyle.Font.VerticalAlignment = fontVerticalTextAlignmentValues.Single(f => f.Value == ((VerticalTextAlignment)font.VerticalTextAlignment).Val).Key; + xlStylized.InnerStyle.Font.VerticalAlignment = ((VerticalTextAlignment)font.VerticalTextAlignment).Val.Value.ToClosedXml(); else xlStylized.InnerStyle.Font.VerticalAlignment = XLFontVerticalTextAlignmentValues.Baseline; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs index c5836c7..ff2805a 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs @@ -22,52 +22,7 @@ { private const Double COLUMN_WIDTH_OFFSET = 0.71; - private List> fillPatternValues = new List>(); - private List> alignmentHorizontalValues = new List>(); - private List> alignmentVerticalValues = new List>(); - private List> borderStyleValues = new List>(); - private List> underlineValuesList = new List>(); - private List> fontVerticalTextAlignmentValues = new List>(); - private List> pageOrderValues = new List>(); - private List> pageOrientationValues = new List>(); - private List> showCommentsValues = new List>(); - private List> printErrorValues = new List>(); - private List> calculateModeValues = new List>(); - private List> referenceModeValues = new List>(); - private List> alignmentReadingOrderValues = new List>(); - private List> totalsRowFunctionValues = new List>(); - private List> dataValidationValues = new List>(); - private List> dataValidationErrorStyleValues = new List>(); - private List> dataValidationOperatorValues = new List>(); - private List> sheetStateValues = new List>(); - - private Boolean populated = false; - private void PopulateEnums() - { - if (!populated) - { - PopulateFillPatternValues(); - PopulateAlignmentHorizontalValues(); - PopulateAlignmentVerticalValues(); - PupulateBorderStyleValues(); - PopulateUnderlineValues(); - PopulateFontVerticalTextAlignmentValues(); - PopulatePageOrderValues(); - PopulatePageOrientationValues(); - PopulateShowCommentsValues(); - PopulatePrintErrorValues(); - PopulateCalculateModeValues(); - PopulateReferenceModeValues(); - PopulateAlignmentReadingOrderValues(); - PopulateTotalsRowFunctionValues(); - PopulateDataValidationValues(); - PopulateDataValidationErrorStyleValues(); - PopulateDataValidationOperatorValues(); - PopulateSheetStateValues(); - populated = true; - } - } - + private enum RelType { General, Workbook, Worksheet, Drawing } private class RelIdGenerator { @@ -135,191 +90,6 @@ } } - #region Pouplate Values - private void PopulateUnderlineValues() - { - - underlineValuesList.Add(new KeyValuePair(XLFontUnderlineValues.Double, UnderlineValues.Double)); - underlineValuesList.Add(new KeyValuePair(XLFontUnderlineValues.DoubleAccounting, UnderlineValues.DoubleAccounting)); - underlineValuesList.Add(new KeyValuePair(XLFontUnderlineValues.None, UnderlineValues.None)); - underlineValuesList.Add(new KeyValuePair(XLFontUnderlineValues.Single, UnderlineValues.Single)); - underlineValuesList.Add(new KeyValuePair(XLFontUnderlineValues.SingleAccounting, UnderlineValues.SingleAccounting)); - } - - private void PopulatePageOrientationValues() - { - pageOrientationValues.Add(new KeyValuePair(XLPageOrientation.Default, OrientationValues.Default)); - pageOrientationValues.Add(new KeyValuePair(XLPageOrientation.Landscape, OrientationValues.Landscape)); - pageOrientationValues.Add(new KeyValuePair(XLPageOrientation.Portrait, OrientationValues.Portrait)); - } - - private void PopulateFontVerticalTextAlignmentValues() - { - fontVerticalTextAlignmentValues.Add(new KeyValuePair(XLFontVerticalTextAlignmentValues.Baseline, VerticalAlignmentRunValues.Baseline)); - fontVerticalTextAlignmentValues.Add(new KeyValuePair(XLFontVerticalTextAlignmentValues.Subscript, VerticalAlignmentRunValues.Subscript)); - fontVerticalTextAlignmentValues.Add(new KeyValuePair(XLFontVerticalTextAlignmentValues.Superscript, VerticalAlignmentRunValues.Superscript)); - } - - private void PopulateFillPatternValues() - { - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkDown, PatternValues.DarkDown)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkGray, PatternValues.DarkGray)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkGrid, PatternValues.DarkGrid)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkHorizontal, PatternValues.DarkHorizontal)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkTrellis, PatternValues.DarkTrellis)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkUp, PatternValues.DarkUp)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.DarkVertical, PatternValues.DarkVertical)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.Gray0625, PatternValues.Gray0625)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.Gray125, PatternValues.Gray125)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightDown, PatternValues.LightDown)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightGray, PatternValues.LightGray)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightGrid, PatternValues.LightGrid)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightHorizontal, PatternValues.LightHorizontal)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightTrellis, PatternValues.LightTrellis)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightUp, PatternValues.LightUp)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.LightVertical, PatternValues.LightVertical)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.MediumGray, PatternValues.MediumGray)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.None, PatternValues.None)); - fillPatternValues.Add(new KeyValuePair(XLFillPatternValues.Solid, PatternValues.Solid)); - } - - private void PupulateBorderStyleValues() - { - - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.DashDot, BorderStyleValues.DashDot)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.DashDotDot, BorderStyleValues.DashDotDot)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Dashed, BorderStyleValues.Dashed)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Dotted, BorderStyleValues.Dotted)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Double, BorderStyleValues.Double)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Hair, BorderStyleValues.Hair)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Medium, BorderStyleValues.Medium)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.MediumDashDot, BorderStyleValues.MediumDashDot)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.MediumDashDotDot, BorderStyleValues.MediumDashDotDot)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.MediumDashed, BorderStyleValues.MediumDashed)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.None, BorderStyleValues.None)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.SlantDashDot, BorderStyleValues.SlantDashDot)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Thick, BorderStyleValues.Thick)); - borderStyleValues.Add(new KeyValuePair(XLBorderStyleValues.Thin, BorderStyleValues.Thin)); - - } - - private void PopulateAlignmentHorizontalValues() - { - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.Center, HorizontalAlignmentValues.Center)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.CenterContinuous, HorizontalAlignmentValues.CenterContinuous)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.Distributed, HorizontalAlignmentValues.Distributed)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.Fill, HorizontalAlignmentValues.Fill)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.General, HorizontalAlignmentValues.General)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.Justify, HorizontalAlignmentValues.Justify)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.Left, HorizontalAlignmentValues.Left)); - alignmentHorizontalValues.Add(new KeyValuePair(XLAlignmentHorizontalValues.Right, HorizontalAlignmentValues.Right)); - } - - private void PopulateAlignmentVerticalValues() - { - - alignmentVerticalValues.Add(new KeyValuePair(XLAlignmentVerticalValues.Bottom, VerticalAlignmentValues.Bottom)); - alignmentVerticalValues.Add(new KeyValuePair(XLAlignmentVerticalValues.Center, VerticalAlignmentValues.Center)); - alignmentVerticalValues.Add(new KeyValuePair(XLAlignmentVerticalValues.Distributed, VerticalAlignmentValues.Distributed)); - alignmentVerticalValues.Add(new KeyValuePair(XLAlignmentVerticalValues.Justify, VerticalAlignmentValues.Justify)); - alignmentVerticalValues.Add(new KeyValuePair(XLAlignmentVerticalValues.Top, VerticalAlignmentValues.Top)); - } - - private void PopulatePageOrderValues() - { - pageOrderValues.Add(new KeyValuePair(XLPageOrderValues.DownThenOver, PageOrderValues.DownThenOver)); - pageOrderValues.Add(new KeyValuePair(XLPageOrderValues.OverThenDown, PageOrderValues.OverThenDown)); - } - - private void PopulateShowCommentsValues() - { - showCommentsValues.Add(new KeyValuePair(XLShowCommentsValues.AsDisplayed, CellCommentsValues.AsDisplayed)); - showCommentsValues.Add(new KeyValuePair(XLShowCommentsValues.AtEnd, CellCommentsValues.AtEnd)); - showCommentsValues.Add(new KeyValuePair(XLShowCommentsValues.None, CellCommentsValues.None)); - } - - private void PopulatePrintErrorValues() - { - printErrorValues.Add(new KeyValuePair(XLPrintErrorValues.Blank, PrintErrorValues.Blank)); - printErrorValues.Add(new KeyValuePair(XLPrintErrorValues.Dash, PrintErrorValues.Dash)); - printErrorValues.Add(new KeyValuePair(XLPrintErrorValues.Displayed, PrintErrorValues.Displayed)); - printErrorValues.Add(new KeyValuePair(XLPrintErrorValues.NA, PrintErrorValues.NA)); - } - - private void PopulateCalculateModeValues() - { - calculateModeValues.Add(new KeyValuePair(XLCalculateMode.Auto, CalculateModeValues.Auto)) ; - calculateModeValues.Add(new KeyValuePair(XLCalculateMode.AutoNoTable, CalculateModeValues.AutoNoTable)); - calculateModeValues.Add(new KeyValuePair(XLCalculateMode.Manual, CalculateModeValues.Manual)); - } - - private void PopulateReferenceModeValues() - { - referenceModeValues.Add(new KeyValuePair(XLReferenceStyle.R1C1, ReferenceModeValues.R1C1)); - referenceModeValues.Add(new KeyValuePair(XLReferenceStyle.A1, ReferenceModeValues.A1)); - } - - private void PopulateAlignmentReadingOrderValues() - { - alignmentReadingOrderValues.Add(new KeyValuePair(XLAlignmentReadingOrderValues.ContextDependent, 0)); - alignmentReadingOrderValues.Add(new KeyValuePair(XLAlignmentReadingOrderValues.LeftToRight, 1)); - alignmentReadingOrderValues.Add(new KeyValuePair(XLAlignmentReadingOrderValues.RightToLeft, 2)); - } - - private void PopulateTotalsRowFunctionValues() - { - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.None, TotalsRowFunctionValues.None)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Sum, TotalsRowFunctionValues.Sum)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Minimum, TotalsRowFunctionValues.Minimum)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Maximum, TotalsRowFunctionValues.Maximum)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Average, TotalsRowFunctionValues.Average)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Count, TotalsRowFunctionValues.Count)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.CountNumbers, TotalsRowFunctionValues.CountNumbers)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.StandardDeviation, TotalsRowFunctionValues.StandardDeviation)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Variance, TotalsRowFunctionValues.Variance)); - totalsRowFunctionValues.Add(new KeyValuePair(XLTotalsRowFunction.Custom, TotalsRowFunctionValues.Custom)); - } - - private void PopulateDataValidationValues() - { - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.AnyValue, DataValidationValues.None)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.Custom, DataValidationValues.Custom)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.Date, DataValidationValues.Date)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.Decimal, DataValidationValues.Decimal)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.List, DataValidationValues.List)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.TextLength, DataValidationValues.TextLength)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.Time, DataValidationValues.Time)); - dataValidationValues.Add(new KeyValuePair(XLAllowedValues.WholeNumber, DataValidationValues.Whole)); - } - - private void PopulateDataValidationErrorStyleValues() - { - dataValidationErrorStyleValues.Add(new KeyValuePair(XLErrorStyle.Information, DataValidationErrorStyleValues.Information)); - dataValidationErrorStyleValues.Add(new KeyValuePair(XLErrorStyle.Warning, DataValidationErrorStyleValues.Warning)); - dataValidationErrorStyleValues.Add(new KeyValuePair(XLErrorStyle.Stop, DataValidationErrorStyleValues.Stop)); - } - - private void PopulateDataValidationOperatorValues() - { - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.Between, DataValidationOperatorValues.Between)); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.EqualOrGreaterThan , DataValidationOperatorValues.GreaterThanOrEqual )); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.EqualOrLessThan, DataValidationOperatorValues.LessThanOrEqual)); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.EqualTo, DataValidationOperatorValues.Equal)); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.GreaterThan, DataValidationOperatorValues.GreaterThan)); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.LessThan, DataValidationOperatorValues.LessThan)); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.NotBetween, DataValidationOperatorValues.NotBetween)); - dataValidationOperatorValues.Add(new KeyValuePair(XLOperator.NotEqualTo, DataValidationOperatorValues.NotEqual)); - } - - private void PopulateSheetStateValues() - { - sheetStateValues.Add(new KeyValuePair(XLWorksheetVisibility.Visible, SheetStateValues.Visible)); - sheetStateValues.Add(new KeyValuePair(XLWorksheetVisibility.Hidden, SheetStateValues.Hidden)); - sheetStateValues.Add(new KeyValuePair(XLWorksheetVisibility.VeryHidden, SheetStateValues.VeryHidden)); - } - - #endregion - private void CreatePackage(String filePath) { SpreadsheetDocument package; @@ -680,9 +450,9 @@ Id = rId, SheetId = (UInt32)xlSheet.SheetId }; - + if (xlSheet.Visibility != XLWorksheetVisibility.Visible) - newSheet.State = sheetStateValues.Single(p => p.Key == xlSheet.Visibility).Value; + newSheet.State = xlSheet.Visibility.ToOpenXml(); workbook.Sheets.Append(newSheet); } @@ -708,15 +478,24 @@ WorkbookView workbookView = workbook.BookViews.Elements().FirstOrDefault(); + UInt32 activeTab = firstSheetVisible; + foreach (var ws in worksheets) + { + if (ws.TabActive) + { + activeTab = (UInt32)(ws.Position - 1); + break; + } + } if (workbookView == null) { - workbookView = new WorkbookView() { ActiveTab = firstSheetVisible, FirstSheet = firstSheetVisible }; + workbookView = new WorkbookView() { ActiveTab = activeTab, FirstSheet = firstSheetVisible }; workbook.BookViews.Append(workbookView); } else { - workbookView.ActiveTab = firstSheetVisible; + workbookView.ActiveTab = activeTab; workbookView.FirstSheet = firstSheetVisible; } @@ -837,13 +616,13 @@ if (CalculateMode == XLCalculateMode.Default) workbook.CalculationProperties.CalculationMode = null; else - workbook.CalculationProperties.CalculationMode = calculateModeValues.Single(p => p.Key == CalculateMode).Value; + workbook.CalculationProperties.CalculationMode = CalculateMode.ToOpenXml(); if (ReferenceStyle == XLReferenceStyle.Default) workbook.CalculationProperties.ReferenceMode = null; else - workbook.CalculationProperties.ReferenceMode = referenceModeValues.Single(p => p.Key == ReferenceStyle).Value; + workbook.CalculationProperties.ReferenceMode = ReferenceStyle.ToOpenXml(); } @@ -1058,8 +837,8 @@ cellFormat.FormatId = (UInt32)formatId; Alignment alignment = new Alignment() { - Horizontal = alignmentHorizontalValues.Single(a => a.Key == styleInfo.Style.Alignment.Horizontal).Value, - Vertical = alignmentVerticalValues.Single(a => a.Key == styleInfo.Style.Alignment.Vertical).Value, + Horizontal = styleInfo.Style.Alignment.Horizontal.ToOpenXml(), + Vertical = styleInfo.Style.Alignment.Vertical.ToOpenXml(), Indent = (UInt32)styleInfo.Style.Alignment.Indent, ReadingOrder = (UInt32)styleInfo.Style.Alignment.ReadingOrder, WrapText = styleInfo.Style.Alignment.WrapText, @@ -1117,18 +896,18 @@ private Boolean ApplyFill(StyleInfo styleInfo) { - return fillPatternValues.Single(p => p.Key == styleInfo.Style.Fill.PatternType).Value == PatternValues.None; + return styleInfo.Style.Fill.PatternType.ToOpenXml() == PatternValues.None; } private Boolean ApplyBorder(StyleInfo styleInfo) { IXLBorder opBorder = styleInfo.Style.Border; return ( - borderStyleValues.Single(b => b.Key == opBorder.BottomBorder).Value != BorderStyleValues.None - || borderStyleValues.Single(b => b.Key == opBorder.DiagonalBorder).Value != BorderStyleValues.None - || borderStyleValues.Single(b => b.Key == opBorder.RightBorder).Value != BorderStyleValues.None - || borderStyleValues.Single(b => b.Key == opBorder.LeftBorder).Value != BorderStyleValues.None - || borderStyleValues.Single(b => b.Key == opBorder.TopBorder).Value != BorderStyleValues.None); + opBorder.BottomBorder.ToOpenXml() != BorderStyleValues.None + || opBorder.DiagonalBorder.ToOpenXml() != BorderStyleValues.None + || opBorder.RightBorder.ToOpenXml() != BorderStyleValues.None + || opBorder.LeftBorder.ToOpenXml() != BorderStyleValues.None + || opBorder.TopBorder.ToOpenXml() != BorderStyleValues.None); } private Boolean ApplyProtection(StyleInfo styleInfo) @@ -1187,13 +966,13 @@ if (alignment != null) { if (alignment.Horizontal != null) - a.Horizontal = alignmentHorizontalValues.Single(p => p.Value == alignment.Horizontal.Value).Key; + a.Horizontal = alignment.Horizontal.Value.ToClosedXml(); if (alignment.Vertical != null) - a.Vertical = alignmentVerticalValues.Single(p => p.Value == alignment.Vertical.Value).Key; + a.Vertical = alignment.Vertical.Value.ToClosedXml(); if (alignment.Indent != null) a.Indent = (Int32)alignment.Indent.Value; if (alignment.ReadingOrder != null) - a.ReadingOrder = alignmentReadingOrderValues.Single(p => p.Value == alignment.ReadingOrder.Value).Key; + a.ReadingOrder = alignment.ReadingOrder.Value.ToClosedXml(); if (alignment.WrapText != null) a.WrapText = alignment.WrapText.Value; if (alignment.TextRotation != null) @@ -1242,27 +1021,27 @@ { Border border = new Border() { DiagonalUp = borderInfo.Border.DiagonalUp, DiagonalDown = borderInfo.Border.DiagonalDown }; - LeftBorder leftBorder = new LeftBorder() { Style = borderStyleValues.Single(b => b.Key == borderInfo.Border.LeftBorder).Value }; + LeftBorder leftBorder = new LeftBorder() { Style = borderInfo.Border.LeftBorder.ToOpenXml() }; Color leftBorderColor = GetNewColor(borderInfo.Border.LeftBorderColor); leftBorder.Append(leftBorderColor); border.Append(leftBorder); - RightBorder rightBorder = new RightBorder() { Style = borderStyleValues.Single(b => b.Key == borderInfo.Border.RightBorder).Value }; + RightBorder rightBorder = new RightBorder() { Style = borderInfo.Border.RightBorder.ToOpenXml() }; Color rightBorderColor = GetNewColor(borderInfo.Border.RightBorderColor); rightBorder.Append(rightBorderColor); border.Append(rightBorder); - TopBorder topBorder = new TopBorder() { Style = borderStyleValues.Single(b => b.Key == borderInfo.Border.TopBorder).Value }; + TopBorder topBorder = new TopBorder() { Style = borderInfo.Border.TopBorder.ToOpenXml() }; Color topBorderColor = GetNewColor(borderInfo.Border.TopBorderColor); topBorder.Append(topBorderColor); border.Append(topBorder); - BottomBorder bottomBorder = new BottomBorder() { Style = borderStyleValues.Single(b => b.Key == borderInfo.Border.BottomBorder).Value }; + BottomBorder bottomBorder = new BottomBorder() { Style = borderInfo.Border.BottomBorder.ToOpenXml() }; Color bottomBorderColor = GetNewColor(borderInfo.Border.BottomBorderColor); bottomBorder.Append(bottomBorderColor); border.Append(bottomBorder); - DiagonalBorder diagonalBorder = new DiagonalBorder() { Style = borderStyleValues.Single(b => b.Key == borderInfo.Border.DiagonalBorder).Value }; + DiagonalBorder diagonalBorder = new DiagonalBorder() { Style = borderInfo.Border.DiagonalBorder.ToOpenXml() }; Color diagonalBorderColor = GetNewColor(borderInfo.Border.DiagonalBorderColor); diagonalBorder.Append(diagonalBorderColor); border.Append(diagonalBorder); @@ -1282,7 +1061,7 @@ if (b.LeftBorder != null) { if (b.LeftBorder.Style != null) - nb.LeftBorder = borderStyleValues.Single(p => p.Value == b.LeftBorder.Style).Key; + nb.LeftBorder = b.LeftBorder.Style.Value.ToClosedXml(); var bColor = GetColor(b.LeftBorder.Color); if (bColor.HasValue) nb.LeftBorderColor = bColor; @@ -1291,7 +1070,7 @@ if (b.RightBorder != null) { if (b.RightBorder.Style != null) - nb.RightBorder = borderStyleValues.Single(p => p.Value == b.RightBorder.Style).Key; + nb.RightBorder = b.RightBorder.Style.Value.ToClosedXml(); var bColor = GetColor(b.RightBorder.Color); if (bColor.HasValue) nb.RightBorderColor = bColor; @@ -1300,7 +1079,7 @@ if (b.TopBorder != null) { if (b.TopBorder.Style != null) - nb.TopBorder = borderStyleValues.Single(p => p.Value == b.TopBorder.Style).Key; + nb.TopBorder = b.TopBorder.Style.Value.ToClosedXml(); var bColor = GetColor(b.TopBorder.Color); if (bColor.HasValue) nb.TopBorderColor = bColor; @@ -1309,7 +1088,7 @@ if (b.BottomBorder != null) { if (b.BottomBorder.Style != null) - nb.BottomBorder = borderStyleValues.Single(p => p.Value == b.BottomBorder.Style).Key; + nb.BottomBorder = b.BottomBorder.Style.Value.ToClosedXml(); var bColor = GetColor(b.BottomBorder.Color); if (bColor.HasValue) nb.BottomBorderColor = bColor; @@ -1372,7 +1151,7 @@ { Fill fill = new Fill(); - PatternFill patternFill = new PatternFill() { PatternType = fillPatternValues.Single(p => p.Key == fillInfo.Fill.PatternType).Value }; + PatternFill patternFill = new PatternFill() { PatternType = fillInfo.Fill.PatternType.ToOpenXml() }; ForegroundColor foregroundColor = new ForegroundColor(); if (fillInfo.Fill.PatternColor.ColorType == XLColorType.Color) foregroundColor.Rgb = fillInfo.Fill.PatternColor.Color.ToHex(); @@ -1410,7 +1189,7 @@ if (f.PatternFill != null) { if (f.PatternFill.PatternType != null) - nF.PatternType = fillPatternValues.Single(p => p.Value == f.PatternFill.PatternType).Key; + nF.PatternType = f.PatternFill.PatternType.Value.ToClosedXml(); var fColor = GetColor(f.PatternFill.ForegroundColor); if (fColor.HasValue) @@ -1458,9 +1237,9 @@ Font font = new Font(); Bold bold = fontInfo.Font.Bold ? new Bold() : null; Italic italic = fontInfo.Font.Italic ? new Italic() : null; - Underline underline = fontInfo.Font.Underline != XLFontUnderlineValues.None ? new Underline() { Val = underlineValuesList.Single(u => u.Key == fontInfo.Font.Underline).Value } : null; + Underline underline = fontInfo.Font.Underline != XLFontUnderlineValues.None ? new Underline() { Val = fontInfo.Font.Underline.ToOpenXml() } : null; Strike strike = fontInfo.Font.Strikethrough ? new Strike() : null; - VerticalTextAlignment verticalAlignment = new VerticalTextAlignment() { Val = fontVerticalTextAlignmentValues.Single(f => f.Key == fontInfo.Font.VerticalAlignment).Value }; + VerticalTextAlignment verticalAlignment = new VerticalTextAlignment() { Val = fontInfo.Font.VerticalAlignment.ToOpenXml() }; Shadow shadow = fontInfo.Font.Shadow ? new Shadow() : null; FontSize fontSize = new FontSize() { Val = fontInfo.Font.FontSize }; Color color = GetNewColor(fontInfo.Font.FontColor); @@ -1521,13 +1300,13 @@ nf.Italic = f.Italic != null; if (f.Underline != null) if (f.Underline.Val != null) - nf.Underline = underlineValuesList.Single(u => u.Value == f.Underline.Val).Key; + nf.Underline = f.Underline.Val.Value.ToClosedXml(); else nf.Underline = XLFontUnderlineValues.Single; nf.Strikethrough = f.Strike != null; if (f.VerticalTextAlignment != null) if (f.VerticalTextAlignment.Val != null) - nf.VerticalAlignment = fontVerticalTextAlignmentValues.Single(v => v.Value == f.VerticalTextAlignment.Val).Key; + nf.VerticalAlignment = f.VerticalTextAlignment.Val.Value.ToClosedXml(); else nf.VerticalAlignment = XLFontVerticalTextAlignmentValues.Baseline; nf.Shadow = f.Shadow != null; @@ -1671,6 +1450,9 @@ worksheetPart.Worksheet.SheetViews.Append(sheetView); } + sheetView.TabSelected = xlWorksheet.TabSelected; + + if (xlWorksheet.ShowFormulas) sheetView.ShowFormulas = true; else @@ -2233,7 +2015,7 @@ AllowBlank = dv.IgnoreBlanks, Formula1 = new Formula1(dv.MinValue), Formula2 = new Formula2(dv.MaxValue), - Type = dataValidationValues.Single(p => p.Key == dv.AllowedValues).Value, + Type = dv.AllowedValues.ToOpenXml(), ShowErrorMessage = dv.ShowErrorMessage, Prompt = dv.InputMessage, PromptTitle = dv.InputTitle, @@ -2241,8 +2023,8 @@ Error = dv.ErrorMessage, ShowDropDown = !dv.InCellDropdown, ShowInputMessage = dv.ShowInputMessage, - ErrorStyle = dataValidationErrorStyleValues.Single(p => p.Key == dv.ErrorStyle).Value, - Operator = dataValidationOperatorValues.Single(p => p.Key == dv.Operator).Value, + ErrorStyle = dv.ErrorStyle.ToOpenXml(), + Operator = dv.Operator.ToOpenXml(), SequenceOfReferences = new ListValue() { InnerText = sequence } }; @@ -2344,13 +2126,13 @@ PageSetup pageSetup = worksheetPart.Worksheet.Elements().First(); cm.SetElement(XLWSContentManager.XLWSContents.PageSetup, pageSetup); - pageSetup.Orientation = pageOrientationValues.Single(p => p.Key == xlWorksheet.PageSetup.PageOrientation).Value; + pageSetup.Orientation = xlWorksheet.PageSetup.PageOrientation.ToOpenXml(); pageSetup.PaperSize = (UInt32)xlWorksheet.PageSetup.PaperSize; pageSetup.BlackAndWhite = xlWorksheet.PageSetup.BlackAndWhite; pageSetup.Draft = xlWorksheet.PageSetup.DraftQuality; - pageSetup.PageOrder = pageOrderValues.Single(p => p.Key == xlWorksheet.PageSetup.PageOrder).Value; - pageSetup.CellComments = showCommentsValues.Single(s => s.Key == xlWorksheet.PageSetup.ShowComments).Value; - pageSetup.Errors = printErrorValues.Single(p => p.Key == xlWorksheet.PageSetup.PrintErrorValue).Value; + pageSetup.PageOrder = xlWorksheet.PageSetup.PageOrder.ToOpenXml(); + pageSetup.CellComments = xlWorksheet.PageSetup.ShowComments.ToOpenXml(); + pageSetup.Errors = xlWorksheet.PageSetup.PrintErrorValue.ToOpenXml(); if (xlWorksheet.PageSetup.FirstPageNumber > 0) { @@ -3399,7 +3181,7 @@ { if (xlField.TotalsRowFunction != XLTotalsRowFunction.None) { - tableColumn1.TotalsRowFunction = totalsRowFunctionValues.Single(p => p.Key == xlField.TotalsRowFunction).Value; + tableColumn1.TotalsRowFunction = xlField.TotalsRowFunction.ToOpenXml(); if (xlField.TotalsRowFunction == XLTotalsRowFunction.Custom) tableColumn1.TotalsRowFormula = new TotalsRowFormula(xlField.TotalsRowFormulaA1); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index 8df8cd0..c002922 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -845,5 +845,26 @@ TabColor = color; return this; } + + public Boolean TabSelected { get; set; } + Boolean tabActive; + public Boolean TabActive + { + get { return tabActive; } + set + { + if (value && !tabActive) + { + foreach (var ws in Worksheet.Workbook.Worksheets) + { + (ws as XLWorksheet).tabActive = false; + } + } + tabActive = value; + } + } + public IXLWorksheet SetTabSelected() { TabSelected = true; return this; } public IXLWorksheet SetTabSelected(Boolean value) { TabSelected = value; return this; } + public IXLWorksheet SetTabActive() { TabActive = true; return this; } public IXLWorksheet SetTabActive(Boolean value) { TabActive = value; return this; } + } } diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj b/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj index 07b46ed..d3244d2 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj @@ -11,7 +11,8 @@ ClosedXML_Examples ClosedXML_Examples v4.0 - Client + + 512 SAK SAK @@ -19,7 +20,7 @@ SAK - x86 + AnyCPU true full false @@ -42,7 +43,7 @@ bin\x64\Debug\ DEBUG;TRACE full - x64 + AnyCPU bin\Debug\ClosedXML_Examples.exe.CodeAnalysisLog.xml true GlobalSuppressions.cs @@ -68,6 +69,40 @@ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules false + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + bin\Debug\ClosedXML_Examples.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + false + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + false + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + bin\Release\ClosedXML_Examples.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + true + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + true + false + @@ -160,6 +195,9 @@ ClosedXML + + +