diff --git a/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML.csproj index 0539fcd..d73fbfd 100644 --- a/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML.csproj @@ -72,6 +72,7 @@ + @@ -347,4 +348,4 @@ --> - + \ No newline at end of file diff --git a/ClosedXML/Excel/Drawings/IXLMarker.cs b/ClosedXML/Excel/Drawings/IXLMarker.cs index fd52192..2339adc 100644 --- a/ClosedXML/Excel/Drawings/IXLMarker.cs +++ b/ClosedXML/Excel/Drawings/IXLMarker.cs @@ -5,21 +5,11 @@ namespace ClosedXML.Excel.Drawings { - public interface IXLMarker + internal interface IXLMarker { Int32 ColumnId { get; set; } Int32 RowId { get; set; } Double ColumnOffset { get; set; } Double RowOffset { get; set; } - - /// - /// Get the zero-based column number. - /// - Int32 GetZeroBasedColumn(); - - /// - /// Get the zero-based row number. - /// - Int32 GetZeroBasedRow(); } } diff --git a/ClosedXML/Excel/Drawings/IXLPicture.cs b/ClosedXML/Excel/Drawings/IXLPicture.cs index 8e9acec..a4e0c48 100644 --- a/ClosedXML/Excel/Drawings/IXLPicture.cs +++ b/ClosedXML/Excel/Drawings/IXLPicture.cs @@ -1,24 +1,12 @@ using System; -using System.Collections.Generic; using System.IO; namespace ClosedXML.Excel.Drawings { - public enum XLPictureFormat - { - Bmp = 0, - Gif = 1, - Png = 2, - Tiff = 3, - Icon = 4, - Pcx = 5, - Jpeg = 6, - Emf = 7, - Wmf = 8 - } - public interface IXLPicture : IDisposable { + IXLCell BottomRightCell { get; } + /// /// Type of image. The supported formats are defined by OpenXML's ImagePartType. /// Default value is "jpeg" @@ -27,20 +15,26 @@ long Height { get; set; } MemoryStream ImageStream { get; } - bool IsAbsolute { get; } long Left { get; set; } - IList Markers { get; } String Name { get; set; } + long OriginalHeight { get; } + long OriginalWidth { get; } + XLPicturePlacement Placement { get; set; } long Top { get; set; } + IXLCell TopLeftCell { get; } long Width { get; set; } IXLPicture AtPosition(long left, long top); - IXLPicture SetAbsolute(); + IXLPicture AtPosition(IXLCell cell); - IXLPicture SetAbsolute(bool value); + IXLPicture AtPosition(IXLCell fromCell, IXLCell toCell); - IXLMarker WithMarker(IXLMarker marker); + void ScaleHeight(Double factor, Boolean relativeToOriginal = false); + + void ScaleWidth(Double factor, Boolean relativeToOriginal = false); + + IXLPicture WithPlacement(XLPicturePlacement value); IXLPicture WithSize(long width, long height); } diff --git a/ClosedXML/Excel/Drawings/PictureEnums.cs b/ClosedXML/Excel/Drawings/PictureEnums.cs new file mode 100644 index 0000000..6a71ec2 --- /dev/null +++ b/ClosedXML/Excel/Drawings/PictureEnums.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ClosedXML.Excel.Drawings +{ + public enum XLPictureFormat + { + Bmp = 0, + Gif = 1, + Png = 2, + Tiff = 3, + Icon = 4, + Pcx = 5, + Jpeg = 6, + Emf = 7, + Wmf = 8 + } + + public enum XLPicturePlacement + { + MoveAndSize = 0, + Move = 1, + FreeFloating = 2 + } +} diff --git a/ClosedXML/Excel/Drawings/XLMarker.cs b/ClosedXML/Excel/Drawings/XLMarker.cs index 1ed01be..d0c7fdc 100644 --- a/ClosedXML/Excel/Drawings/XLMarker.cs +++ b/ClosedXML/Excel/Drawings/XLMarker.cs @@ -5,12 +5,10 @@ namespace ClosedXML.Excel.Drawings { - public class XLMarker : IXLMarker + internal class XLMarker : IXLMarker { private Int32 colId; private Int32 rowId; - private Double colOffset; - private Double rowOffset; public Int32 ColumnId { @@ -42,38 +40,9 @@ } } - public Double ColumnOffset - { - set - { - this.colOffset = value; - } - get - { - return this.colOffset; - } - } + public Double ColumnOffset { get; set; } - public Double RowOffset - { - set - { - this.rowOffset = value; - } - get - { - return this.rowOffset; - } - } + public Double RowOffset { get; set; } - public Int32 GetZeroBasedColumn() - { - return colId - 1; - } - - public Int32 GetZeroBasedRow() - { - return rowId - 1; - } } } diff --git a/ClosedXML/Excel/Drawings/XLPicture.cs b/ClosedXML/Excel/Drawings/XLPicture.cs index daeefa7..b4cb5b9 100644 --- a/ClosedXML/Excel/Drawings/XLPicture.cs +++ b/ClosedXML/Excel/Drawings/XLPicture.cs @@ -1,16 +1,26 @@ using System; using System.Collections.Generic; using System.Drawing; +using System.Drawing.Imaging; using System.IO; +using System.Linq; +using System.Reflection; namespace ClosedXML.Excel.Drawings { internal class XLPicture : IXLPicture { - internal readonly float HorizontalResolution; - internal readonly float VerticalResolution; + private readonly IXLWorksheet _worksheet; - internal XLPicture(Stream stream, XLPictureFormat format) + private XLPicture(IXLWorksheet worksheet) + { + if (worksheet == null) throw new ArgumentNullException(nameof(worksheet)); + this._worksheet = worksheet; + this.Placement = XLPicturePlacement.MoveAndSize; + } + + internal XLPicture(IXLWorksheet worksheet, Stream stream, XLPictureFormat format) + : this(worksheet) { if (stream == null) throw new ArgumentNullException(nameof(stream)); this.Format = format; @@ -26,65 +36,215 @@ if (expectedFormat.Guid != bitmap.RawFormat.Guid) throw new ArgumentException("The picture format in the stream and the parameter don't match"); - this.Width = bitmap.Width; - this.Height = bitmap.Height; - HorizontalResolution = bitmap.HorizontalResolution; - VerticalResolution = bitmap.VerticalResolution; + DeduceDimensionsFromBitmap(bitmap); } ImageStream.Seek(0, SeekOrigin.Begin); } } - public XLPictureFormat Format { get; protected set; } + internal XLPicture(IXLWorksheet worksheet, Bitmap bitmap) + : this(worksheet) + { + if (bitmap == null) throw new ArgumentNullException(nameof(bitmap)); + this.ImageStream = new MemoryStream(); + bitmap.Save(ImageStream, bitmap.RawFormat); + ImageStream.Seek(0, SeekOrigin.Begin); + DeduceDimensionsFromBitmap(bitmap); - public long Height { get; set; } + var formats = typeof(ImageFormat).GetProperties(BindingFlags.Static | BindingFlags.Public) + .Where(pi => (pi.GetValue(null, null) as ImageFormat).Guid.Equals(bitmap.RawFormat.Guid)); - public MemoryStream ImageStream { get; protected set; } + if (!formats.Any() || formats.Count() > 1) + throw new ArgumentException("Unsupported or unknown image format in bitmap"); - public bool IsAbsolute { get; private set; } + this.Format = Enum.Parse(typeof(XLPictureFormat), formats.Single().Name, true).CastTo(); + } - public long Left { get; set; } + public IXLCell BottomRightCell + { + get + { + if (this.Markers.Count > 1) + { + var marker = this.Markers.Skip(1).First(); + return _worksheet.Cell(marker.RowId, marker.ColumnId); + } + else + return null; + } + + private set + { + while (this.Markers.Count > 1) + { + this.Markers.RemoveAt(this.Markers.Count - 1); + } + + this.Markers.Add(new XLMarker() + { + ColumnId = value.WorksheetColumn().ColumnNumber(), + RowId = value.WorksheetRow().RowNumber() + }); + } + } + + public XLPictureFormat Format { get; private set; } + private long height; + + public long Height + { + get + { + return height; + } + set + { + if (this.Placement == XLPicturePlacement.MoveAndSize) + throw new ArgumentException("To set the height, the placement should be FreeFloating or Move"); + height = value; + } + } + + public MemoryStream ImageStream { get; private set; } + + public long left; + + public long Left + { + get { return left; } + set + { + if (this.Placement != XLPicturePlacement.FreeFloating) + throw new ArgumentException("To set the left-hand offset, the placement should be FreeFloating"); + left = value; + } + } + public IList Markers { get; private set; } = new List(); public String Name { get; set; } + public long OriginalHeight { get; private set; } - public long Top { get; set; } - public long Width { get; set; } + public long OriginalWidth { get; private set; } + + public XLPicturePlacement Placement { get; set; } + private long top; + + public long Top + { + get { return top; } + set + { + if (this.Placement != XLPicturePlacement.FreeFloating) + throw new ArgumentException("To set the top offset, the placement should be FreeFloating"); + top = value; + } + } + + public IXLCell TopLeftCell + { + get + { + if (this.Markers.Any()) + { + var marker = this.Markers.First(); + return _worksheet.Cell(marker.RowId, marker.ColumnId); + } + else + return null; + } + + private set + { + if (this.Markers.Any()) + this.Markers.RemoveAt(0); + + this.Markers.Insert(0, new XLMarker() + { + ColumnId = value.WorksheetColumn().ColumnNumber(), + RowId = value.WorksheetRow().RowNumber() + }); + } + } + + private long width; + + public long Width + { + get + { + return width; + } + set + { + if (this.Placement == XLPicturePlacement.MoveAndSize) + throw new ArgumentException("To set the width, the placement should be FreeFloating or Move"); + width = value; + } + } public IXLPicture AtPosition(long left, long top) { + this.Placement = XLPicturePlacement.FreeFloating; this.Left = left; this.Top = top; return this; } + public IXLPicture AtPosition(IXLCell cell) + { + if (cell == null) throw new ArgumentNullException(nameof(cell)); + this.Placement = XLPicturePlacement.Move; + this.TopLeftCell = cell; + return this; + } + + public IXLPicture AtPosition(IXLCell fromCell, IXLCell toCell) + { + if (fromCell == null) throw new ArgumentNullException(nameof(fromCell)); + this.Placement = XLPicturePlacement.MoveAndSize; + this.TopLeftCell = fromCell; + + if (toCell != null) + this.BottomRightCell = toCell; + + return this; + } + public void Dispose() { this.ImageStream.Dispose(); } - public IXLPicture SetAbsolute() + public void ScaleHeight(Double factor, Boolean relativeToOriginal = false) { - return SetAbsolute(true); + this.Height = Convert.ToInt64((relativeToOriginal ? this.OriginalHeight : this.Height) * factor); } - public IXLPicture SetAbsolute(bool value) + public void ScaleWidth(Double factor, Boolean relativeToOriginal = false) { - this.IsAbsolute = value; + this.Width = Convert.ToInt64((relativeToOriginal ? this.OriginalWidth : this.Width) * factor); + } + + public IXLPicture WithPlacement(XLPicturePlacement value) + { + this.Placement = value; return this; } - public IXLMarker WithMarker(IXLMarker marker) - { - if (marker == null) throw new ArgumentNullException(nameof(marker)); - this.Markers.Add(marker); - return marker; - } - public IXLPicture WithSize(long width, long height) { this.Width = width; this.Height = height; return this; } + + private void DeduceDimensionsFromBitmap(Bitmap bitmap) + { + this.OriginalWidth = bitmap.Width; + this.OriginalHeight = bitmap.Height; + + this.width = bitmap.Width; + this.height = bitmap.Height; + } } } diff --git a/ClosedXML/Excel/EnumConverter.cs b/ClosedXML/Excel/EnumConverter.cs index f35d89b..e5a1aec 100644 --- a/ClosedXML/Excel/EnumConverter.cs +++ b/ClosedXML/Excel/EnumConverter.cs @@ -1,1262 +1,1720 @@ -using System; -using DocumentFormat.OpenXml.Spreadsheet; -using DocumentFormat.OpenXml.Vml; - -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 - } - } - public static PhoneticAlignmentValues ToOpenXml(this XLPhoneticAlignment value) - { - switch (value) - { - case XLPhoneticAlignment.Center : - return PhoneticAlignmentValues.Center; - case XLPhoneticAlignment.Distributed: - return PhoneticAlignmentValues.Distributed; - case XLPhoneticAlignment.Left: - return PhoneticAlignmentValues.Left; - case XLPhoneticAlignment.NoControl: - return PhoneticAlignmentValues.NoControl; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static PhoneticValues ToOpenXml(this XLPhoneticType value) - { - switch (value) - { - case XLPhoneticType.FullWidthKatakana: - return PhoneticValues.FullWidthKatakana; - case XLPhoneticType.HalfWidthKatakana: - return PhoneticValues.HalfWidthKatakana; - case XLPhoneticType.Hiragana: - return PhoneticValues.Hiragana; - case XLPhoneticType.NoConversion: - return PhoneticValues.NoConversion; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static DataConsolidateFunctionValues ToOpenXml(this XLPivotSummary value) - { - switch (value) - { - case XLPivotSummary.Sum: return DataConsolidateFunctionValues.Sum; - case XLPivotSummary.Count: return DataConsolidateFunctionValues.Count; - case XLPivotSummary.Average: return DataConsolidateFunctionValues.Average; - case XLPivotSummary.Minimum: return DataConsolidateFunctionValues.Minimum; - case XLPivotSummary.Maximum: return DataConsolidateFunctionValues.Maximum; - case XLPivotSummary.Product: return DataConsolidateFunctionValues.Product; - case XLPivotSummary.CountNumbers: return DataConsolidateFunctionValues.CountNumbers; - case XLPivotSummary.StandardDeviation: return DataConsolidateFunctionValues.StandardDeviation; - case XLPivotSummary.PopulationStandardDeviation: return DataConsolidateFunctionValues.StandardDeviationP; - case XLPivotSummary.Variance: return DataConsolidateFunctionValues.Variance; - case XLPivotSummary.PopulationVariance: return DataConsolidateFunctionValues.VarianceP; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static ShowDataAsValues ToOpenXml(this XLPivotCalculation value) - { - switch (value) - { - case XLPivotCalculation.Normal: return ShowDataAsValues.Normal; - case XLPivotCalculation.DifferenceFrom: return ShowDataAsValues.Difference; - case XLPivotCalculation.PercentageOf: return ShowDataAsValues.Percent; - case XLPivotCalculation.PercentageDifferenceFrom: return ShowDataAsValues.PercentageDifference; - case XLPivotCalculation.RunningTotal: return ShowDataAsValues.RunTotal; - case XLPivotCalculation.PercentageOfRow: return ShowDataAsValues.PercentOfRaw; // There's a typo in the OpenXML SDK =) - case XLPivotCalculation.PercentageOfColumn: return ShowDataAsValues.PercentOfColumn; - case XLPivotCalculation.PercentageOfTotal: return ShowDataAsValues.PercentOfTotal; - case XLPivotCalculation.Index: return ShowDataAsValues.Index; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static FilterOperatorValues ToOpenXml(this XLFilterOperator value) - { - switch(value) - { - case XLFilterOperator.Equal: return FilterOperatorValues.Equal; - case XLFilterOperator.NotEqual: return FilterOperatorValues.NotEqual; - case XLFilterOperator.GreaterThan: return FilterOperatorValues.GreaterThan; - case XLFilterOperator.EqualOrGreaterThan: return FilterOperatorValues.GreaterThanOrEqual; - case XLFilterOperator.LessThan: return FilterOperatorValues.LessThan; - case XLFilterOperator.EqualOrLessThan: return FilterOperatorValues.LessThanOrEqual; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static DynamicFilterValues ToOpenXml(this XLFilterDynamicType value) - { - switch (value) - { - case XLFilterDynamicType.AboveAverage: return DynamicFilterValues.AboveAverage; - case XLFilterDynamicType.BelowAverage: return DynamicFilterValues.BelowAverage; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static SheetViewValues ToOpenXml(this XLSheetViewOptions value) - { - switch (value) - { - case XLSheetViewOptions.Normal: return SheetViewValues.Normal; - case XLSheetViewOptions.PageBreakPreview: return SheetViewValues.PageBreakPreview; - case XLSheetViewOptions.PageLayout: return SheetViewValues.PageLayout; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static StrokeLineStyleValues ToOpenXml(this XLLineStyle value) - { - switch (value) - { - case XLLineStyle.Single : return StrokeLineStyleValues.Single ; - case XLLineStyle.ThickBetweenThin: return StrokeLineStyleValues.ThickBetweenThin; - case XLLineStyle.ThickThin: return StrokeLineStyleValues.ThickThin; - case XLLineStyle.ThinThick: return StrokeLineStyleValues.ThinThick; - case XLLineStyle.ThinThin: return StrokeLineStyleValues.ThinThin; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static ConditionalFormatValues ToOpenXml(this XLConditionalFormatType value) - { - switch (value) - { - case XLConditionalFormatType.Expression: return ConditionalFormatValues.Expression; - case XLConditionalFormatType.CellIs: return ConditionalFormatValues.CellIs; - case XLConditionalFormatType.ColorScale: return ConditionalFormatValues.ColorScale; - case XLConditionalFormatType.DataBar: return ConditionalFormatValues.DataBar; - case XLConditionalFormatType.IconSet: return ConditionalFormatValues.IconSet; - case XLConditionalFormatType.Top10: return ConditionalFormatValues.Top10; - case XLConditionalFormatType.IsUnique: return ConditionalFormatValues.UniqueValues; - case XLConditionalFormatType.IsDuplicate: return ConditionalFormatValues.DuplicateValues; - case XLConditionalFormatType.ContainsText: return ConditionalFormatValues.ContainsText; - case XLConditionalFormatType.NotContainsText: return ConditionalFormatValues.NotContainsText; - case XLConditionalFormatType.StartsWith: return ConditionalFormatValues.BeginsWith; - case XLConditionalFormatType.EndsWith: return ConditionalFormatValues.EndsWith; - case XLConditionalFormatType.IsBlank: return ConditionalFormatValues.ContainsBlanks; - case XLConditionalFormatType.NotBlank: return ConditionalFormatValues.NotContainsBlanks; - case XLConditionalFormatType.IsError: return ConditionalFormatValues.ContainsErrors; - case XLConditionalFormatType.NotError: return ConditionalFormatValues.NotContainsErrors; - case XLConditionalFormatType.TimePeriod: return ConditionalFormatValues.TimePeriod; - case XLConditionalFormatType.AboveAverage: return ConditionalFormatValues.AboveAverage; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static ConditionalFormatValueObjectValues ToOpenXml(this XLCFContentType value) - { - switch (value) - { - case XLCFContentType.Number: return ConditionalFormatValueObjectValues.Number; - case XLCFContentType.Percent: return ConditionalFormatValueObjectValues.Percent; - case XLCFContentType.Maximum: return ConditionalFormatValueObjectValues.Max; - case XLCFContentType.Minimum: return ConditionalFormatValueObjectValues.Min; - case XLCFContentType.Formula: return ConditionalFormatValueObjectValues.Formula; - case XLCFContentType.Percentile: return ConditionalFormatValueObjectValues.Percentile; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static ConditionalFormattingOperatorValues ToOpenXml(this XLCFOperator value) - { - switch (value) - { - case XLCFOperator.LessThan: return ConditionalFormattingOperatorValues.LessThan; - case XLCFOperator.EqualOrLessThan: return ConditionalFormattingOperatorValues.LessThanOrEqual; - case XLCFOperator.Equal: return ConditionalFormattingOperatorValues.Equal; - case XLCFOperator.NotEqual: return ConditionalFormattingOperatorValues.NotEqual; - case XLCFOperator.EqualOrGreaterThan: return ConditionalFormattingOperatorValues.GreaterThanOrEqual; - case XLCFOperator.GreaterThan: return ConditionalFormattingOperatorValues.GreaterThan; - case XLCFOperator.Between: return ConditionalFormattingOperatorValues.Between; - case XLCFOperator.NotBetween: return ConditionalFormattingOperatorValues.NotBetween; - case XLCFOperator.Contains : return ConditionalFormattingOperatorValues.ContainsText; - case XLCFOperator.NotContains: return ConditionalFormattingOperatorValues.NotContains; - case XLCFOperator.StartsWith: return ConditionalFormattingOperatorValues.BeginsWith; - case XLCFOperator.EndsWith: return ConditionalFormattingOperatorValues.EndsWith; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static IconSetValues ToOpenXml(this XLIconSetStyle value) - { - switch (value) - { - case XLIconSetStyle.ThreeArrows: return IconSetValues.ThreeArrows; - case XLIconSetStyle.ThreeArrowsGray: return IconSetValues.ThreeArrowsGray; - case XLIconSetStyle.ThreeFlags: return IconSetValues.ThreeFlags; - case XLIconSetStyle.ThreeTrafficLights1: return IconSetValues.ThreeTrafficLights1; - case XLIconSetStyle.ThreeTrafficLights2: return IconSetValues.ThreeTrafficLights2; - case XLIconSetStyle.ThreeSigns: return IconSetValues.ThreeSigns; - case XLIconSetStyle.ThreeSymbols: return IconSetValues.ThreeSymbols; - case XLIconSetStyle.ThreeSymbols2: return IconSetValues.ThreeSymbols2; - case XLIconSetStyle.FourArrows: return IconSetValues.FourArrows; - case XLIconSetStyle.FourArrowsGray: return IconSetValues.FourArrowsGray; - case XLIconSetStyle.FourRedToBlack: return IconSetValues.FourRedToBlack; - case XLIconSetStyle.FourRating: return IconSetValues.FourRating; - case XLIconSetStyle.FourTrafficLights: return IconSetValues.FourTrafficLights; - case XLIconSetStyle.FiveArrows: return IconSetValues.FiveArrows; - case XLIconSetStyle.FiveArrowsGray: return IconSetValues.FiveArrowsGray; - case XLIconSetStyle.FiveRating: return IconSetValues.FiveRating; - case XLIconSetStyle.FiveQuarters: return IconSetValues.FiveQuarters; - - #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 - } - } - public static XLPhoneticAlignment ToClosedXml(this PhoneticAlignmentValues value) - { - switch (value) - { - case PhoneticAlignmentValues.Center: - return XLPhoneticAlignment.Center; - case PhoneticAlignmentValues.Distributed: - return XLPhoneticAlignment.Distributed; - case PhoneticAlignmentValues.Left: - return XLPhoneticAlignment.Left; - case PhoneticAlignmentValues.NoControl: - return XLPhoneticAlignment.NoControl; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLPhoneticType ToClosedXml(this PhoneticValues value) - { - switch (value) - { - case PhoneticValues.FullWidthKatakana: return XLPhoneticType.FullWidthKatakana; - case PhoneticValues.HalfWidthKatakana: - return XLPhoneticType.HalfWidthKatakana; - case PhoneticValues.Hiragana: - return XLPhoneticType.Hiragana; - case PhoneticValues.NoConversion: - return XLPhoneticType.NoConversion; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLPivotSummary ToClosedXml(this DataConsolidateFunctionValues value) - { - switch (value) - { - case DataConsolidateFunctionValues.Sum: return XLPivotSummary.Sum; - case DataConsolidateFunctionValues.Count: return XLPivotSummary.Count; - case DataConsolidateFunctionValues.Average: return XLPivotSummary.Average; - case DataConsolidateFunctionValues.Minimum: return XLPivotSummary.Minimum; - case DataConsolidateFunctionValues.Maximum: return XLPivotSummary.Maximum; - case DataConsolidateFunctionValues.Product: return XLPivotSummary.Product; - case DataConsolidateFunctionValues.CountNumbers: return XLPivotSummary.CountNumbers; - case DataConsolidateFunctionValues.StandardDeviation: return XLPivotSummary.StandardDeviation; - case DataConsolidateFunctionValues.StandardDeviationP: return XLPivotSummary.PopulationStandardDeviation; - case DataConsolidateFunctionValues.Variance: return XLPivotSummary.Variance; - case DataConsolidateFunctionValues.VarianceP: return XLPivotSummary.PopulationVariance; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLPivotCalculation ToClosedXml(this ShowDataAsValues value) - { - switch (value) - { - case ShowDataAsValues.Normal: return XLPivotCalculation.Normal; - case ShowDataAsValues.Difference: return XLPivotCalculation.DifferenceFrom; - case ShowDataAsValues.Percent: return XLPivotCalculation.PercentageOf; - case ShowDataAsValues.PercentageDifference: return XLPivotCalculation.PercentageDifferenceFrom; - case ShowDataAsValues.RunTotal: return XLPivotCalculation.RunningTotal; - case ShowDataAsValues.PercentOfRaw: return XLPivotCalculation.PercentageOfRow; // There's a typo in the OpenXML SDK =) - case ShowDataAsValues.PercentOfColumn: return XLPivotCalculation.PercentageOfColumn; - case ShowDataAsValues.PercentOfTotal: return XLPivotCalculation.PercentageOfTotal; - case ShowDataAsValues.Index: return XLPivotCalculation.Index; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLFilterOperator ToClosedXml(this FilterOperatorValues value) - { - switch (value) - { - case FilterOperatorValues.Equal: return XLFilterOperator.Equal; - case FilterOperatorValues.NotEqual: return XLFilterOperator.NotEqual; - case FilterOperatorValues.GreaterThan: return XLFilterOperator.GreaterThan; - case FilterOperatorValues.LessThan: return XLFilterOperator.LessThan; - case FilterOperatorValues.GreaterThanOrEqual: return XLFilterOperator.EqualOrGreaterThan; - case FilterOperatorValues.LessThanOrEqual: return XLFilterOperator.EqualOrLessThan; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLFilterDynamicType ToClosedXml(this DynamicFilterValues value) - { - switch (value) - { - case DynamicFilterValues.AboveAverage: return XLFilterDynamicType.AboveAverage; - case DynamicFilterValues.BelowAverage: return XLFilterDynamicType.BelowAverage; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLSheetViewOptions ToClosedXml(this SheetViewValues value) - { - switch (value) - { - case SheetViewValues.Normal: return XLSheetViewOptions.Normal; - case SheetViewValues.PageBreakPreview: return XLSheetViewOptions.PageBreakPreview; - case SheetViewValues.PageLayout: return XLSheetViewOptions.PageLayout; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLLineStyle ToClosedXml(this StrokeLineStyleValues value) - { - switch (value) - { - case StrokeLineStyleValues.Single: return XLLineStyle.Single; - case StrokeLineStyleValues.ThickBetweenThin: return XLLineStyle.ThickBetweenThin; - case StrokeLineStyleValues.ThickThin: return XLLineStyle.ThickThin; - case StrokeLineStyleValues.ThinThick: return XLLineStyle.ThinThick; - case StrokeLineStyleValues.ThinThin: return XLLineStyle.ThinThin; - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLConditionalFormatType ToClosedXml(this ConditionalFormatValues value) - { - switch (value) - { - case ConditionalFormatValues.Expression: return XLConditionalFormatType.Expression; - case ConditionalFormatValues.CellIs: return XLConditionalFormatType.CellIs; - case ConditionalFormatValues.ColorScale: return XLConditionalFormatType.ColorScale; - case ConditionalFormatValues.DataBar: return XLConditionalFormatType.DataBar; - case ConditionalFormatValues.IconSet: return XLConditionalFormatType.IconSet; - case ConditionalFormatValues.Top10: return XLConditionalFormatType.Top10; - case ConditionalFormatValues.UniqueValues: return XLConditionalFormatType.IsUnique; - case ConditionalFormatValues.DuplicateValues: return XLConditionalFormatType.IsDuplicate; - case ConditionalFormatValues.ContainsText: return XLConditionalFormatType.ContainsText; - case ConditionalFormatValues.NotContainsText: return XLConditionalFormatType.NotContainsText; - case ConditionalFormatValues.BeginsWith: return XLConditionalFormatType.StartsWith; - case ConditionalFormatValues.EndsWith: return XLConditionalFormatType.EndsWith; - case ConditionalFormatValues.ContainsBlanks: return XLConditionalFormatType.IsBlank; - case ConditionalFormatValues.NotContainsBlanks: return XLConditionalFormatType.NotBlank; - case ConditionalFormatValues.ContainsErrors: return XLConditionalFormatType.IsError; - case ConditionalFormatValues.NotContainsErrors: return XLConditionalFormatType.NotError; - case ConditionalFormatValues.TimePeriod: return XLConditionalFormatType.TimePeriod; - case ConditionalFormatValues.AboveAverage: return XLConditionalFormatType.AboveAverage; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLCFContentType ToClosedXml(this ConditionalFormatValueObjectValues value) - { - switch (value) - { - case ConditionalFormatValueObjectValues.Number: return XLCFContentType.Number; - case ConditionalFormatValueObjectValues.Percent: return XLCFContentType.Percent; - case ConditionalFormatValueObjectValues.Max: return XLCFContentType.Maximum; - case ConditionalFormatValueObjectValues.Min: return XLCFContentType.Minimum; - case ConditionalFormatValueObjectValues.Formula: return XLCFContentType.Formula; - case ConditionalFormatValueObjectValues.Percentile: return XLCFContentType.Percentile; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - public static XLCFOperator ToClosedXml(this ConditionalFormattingOperatorValues value) - { - switch (value) - { - case ConditionalFormattingOperatorValues.LessThan: return XLCFOperator.LessThan; - case ConditionalFormattingOperatorValues.LessThanOrEqual: return XLCFOperator.EqualOrLessThan; - case ConditionalFormattingOperatorValues.Equal: return XLCFOperator.Equal; - case ConditionalFormattingOperatorValues.NotEqual: return XLCFOperator.NotEqual; - case ConditionalFormattingOperatorValues.GreaterThanOrEqual: return XLCFOperator.EqualOrGreaterThan; - case ConditionalFormattingOperatorValues.GreaterThan: return XLCFOperator.GreaterThan; - case ConditionalFormattingOperatorValues.Between: return XLCFOperator.Between; - case ConditionalFormattingOperatorValues.NotBetween: return XLCFOperator.NotBetween; - case ConditionalFormattingOperatorValues.ContainsText: return XLCFOperator.Contains; - case ConditionalFormattingOperatorValues.NotContains: return XLCFOperator.NotContains; - case ConditionalFormattingOperatorValues.BeginsWith: return XLCFOperator.StartsWith; - case ConditionalFormattingOperatorValues.EndsWith: return XLCFOperator.EndsWith; - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - - public static XLIconSetStyle ToClosedXml(this IconSetValues value) - { - switch (value) - { - case IconSetValues.ThreeArrows: return XLIconSetStyle.ThreeArrows; - case IconSetValues.ThreeArrowsGray: return XLIconSetStyle.ThreeArrowsGray; - case IconSetValues.ThreeFlags: return XLIconSetStyle.ThreeFlags; - case IconSetValues.ThreeTrafficLights1: return XLIconSetStyle.ThreeTrafficLights1; - case IconSetValues.ThreeTrafficLights2: return XLIconSetStyle.ThreeTrafficLights2; - case IconSetValues.ThreeSigns: return XLIconSetStyle.ThreeSigns; - case IconSetValues.ThreeSymbols: return XLIconSetStyle.ThreeSymbols; - case IconSetValues.ThreeSymbols2: return XLIconSetStyle.ThreeSymbols2; - case IconSetValues.FourArrows: return XLIconSetStyle.FourArrows; - case IconSetValues.FourArrowsGray: return XLIconSetStyle.FourArrowsGray; - case IconSetValues.FourRedToBlack: return XLIconSetStyle.FourRedToBlack; - case IconSetValues.FourRating: return XLIconSetStyle.FourRating; - case IconSetValues.FourTrafficLights: return XLIconSetStyle.FourTrafficLights; - case IconSetValues.FiveArrows: return XLIconSetStyle.FiveArrows; - case IconSetValues.FiveArrowsGray: return XLIconSetStyle.FiveArrowsGray; - case IconSetValues.FiveRating: return XLIconSetStyle.FiveRating; - case IconSetValues.FiveQuarters: return XLIconSetStyle.FiveQuarters; - - - #region default - default: - throw new ApplicationException("Not implemented value!"); - #endregion - } - } - #endregion - } -} +using ClosedXML.Excel.Drawings; +using DocumentFormat.OpenXml.Packaging; +using DocumentFormat.OpenXml.Spreadsheet; +using System; +using Vml = DocumentFormat.OpenXml.Vml; +using Xdr = DocumentFormat.OpenXml.Drawing.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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + public static PhoneticAlignmentValues ToOpenXml(this XLPhoneticAlignment value) + { + switch (value) + { + case XLPhoneticAlignment.Center: + return PhoneticAlignmentValues.Center; + + case XLPhoneticAlignment.Distributed: + return PhoneticAlignmentValues.Distributed; + + case XLPhoneticAlignment.Left: + return PhoneticAlignmentValues.Left; + + case XLPhoneticAlignment.NoControl: + return PhoneticAlignmentValues.NoControl; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static PhoneticValues ToOpenXml(this XLPhoneticType value) + { + switch (value) + { + case XLPhoneticType.FullWidthKatakana: + return PhoneticValues.FullWidthKatakana; + + case XLPhoneticType.HalfWidthKatakana: + return PhoneticValues.HalfWidthKatakana; + + case XLPhoneticType.Hiragana: + return PhoneticValues.Hiragana; + + case XLPhoneticType.NoConversion: + return PhoneticValues.NoConversion; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static DataConsolidateFunctionValues ToOpenXml(this XLPivotSummary value) + { + switch (value) + { + case XLPivotSummary.Sum: return DataConsolidateFunctionValues.Sum; + case XLPivotSummary.Count: return DataConsolidateFunctionValues.Count; + case XLPivotSummary.Average: return DataConsolidateFunctionValues.Average; + case XLPivotSummary.Minimum: return DataConsolidateFunctionValues.Minimum; + case XLPivotSummary.Maximum: return DataConsolidateFunctionValues.Maximum; + case XLPivotSummary.Product: return DataConsolidateFunctionValues.Product; + case XLPivotSummary.CountNumbers: return DataConsolidateFunctionValues.CountNumbers; + case XLPivotSummary.StandardDeviation: return DataConsolidateFunctionValues.StandardDeviation; + case XLPivotSummary.PopulationStandardDeviation: return DataConsolidateFunctionValues.StandardDeviationP; + case XLPivotSummary.Variance: return DataConsolidateFunctionValues.Variance; + case XLPivotSummary.PopulationVariance: return DataConsolidateFunctionValues.VarianceP; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static ShowDataAsValues ToOpenXml(this XLPivotCalculation value) + { + switch (value) + { + case XLPivotCalculation.Normal: return ShowDataAsValues.Normal; + case XLPivotCalculation.DifferenceFrom: return ShowDataAsValues.Difference; + case XLPivotCalculation.PercentageOf: return ShowDataAsValues.Percent; + case XLPivotCalculation.PercentageDifferenceFrom: return ShowDataAsValues.PercentageDifference; + case XLPivotCalculation.RunningTotal: return ShowDataAsValues.RunTotal; + case XLPivotCalculation.PercentageOfRow: return ShowDataAsValues.PercentOfRaw; // There's a typo in the OpenXML SDK =) + case XLPivotCalculation.PercentageOfColumn: return ShowDataAsValues.PercentOfColumn; + case XLPivotCalculation.PercentageOfTotal: return ShowDataAsValues.PercentOfTotal; + case XLPivotCalculation.Index: return ShowDataAsValues.Index; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static FilterOperatorValues ToOpenXml(this XLFilterOperator value) + { + switch (value) + { + case XLFilterOperator.Equal: return FilterOperatorValues.Equal; + case XLFilterOperator.NotEqual: return FilterOperatorValues.NotEqual; + case XLFilterOperator.GreaterThan: return FilterOperatorValues.GreaterThan; + case XLFilterOperator.EqualOrGreaterThan: return FilterOperatorValues.GreaterThanOrEqual; + case XLFilterOperator.LessThan: return FilterOperatorValues.LessThan; + case XLFilterOperator.EqualOrLessThan: return FilterOperatorValues.LessThanOrEqual; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static DynamicFilterValues ToOpenXml(this XLFilterDynamicType value) + { + switch (value) + { + case XLFilterDynamicType.AboveAverage: return DynamicFilterValues.AboveAverage; + case XLFilterDynamicType.BelowAverage: return DynamicFilterValues.BelowAverage; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static SheetViewValues ToOpenXml(this XLSheetViewOptions value) + { + switch (value) + { + case XLSheetViewOptions.Normal: return SheetViewValues.Normal; + case XLSheetViewOptions.PageBreakPreview: return SheetViewValues.PageBreakPreview; + case XLSheetViewOptions.PageLayout: return SheetViewValues.PageLayout; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static Vml.StrokeLineStyleValues ToOpenXml(this XLLineStyle value) + { + switch (value) + { + case XLLineStyle.Single: return Vml.StrokeLineStyleValues.Single; + case XLLineStyle.ThickBetweenThin: return Vml.StrokeLineStyleValues.ThickBetweenThin; + case XLLineStyle.ThickThin: return Vml.StrokeLineStyleValues.ThickThin; + case XLLineStyle.ThinThick: return Vml.StrokeLineStyleValues.ThinThick; + case XLLineStyle.ThinThin: return Vml.StrokeLineStyleValues.ThinThin; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static ConditionalFormatValues ToOpenXml(this XLConditionalFormatType value) + { + switch (value) + { + case XLConditionalFormatType.Expression: return ConditionalFormatValues.Expression; + case XLConditionalFormatType.CellIs: return ConditionalFormatValues.CellIs; + case XLConditionalFormatType.ColorScale: return ConditionalFormatValues.ColorScale; + case XLConditionalFormatType.DataBar: return ConditionalFormatValues.DataBar; + case XLConditionalFormatType.IconSet: return ConditionalFormatValues.IconSet; + case XLConditionalFormatType.Top10: return ConditionalFormatValues.Top10; + case XLConditionalFormatType.IsUnique: return ConditionalFormatValues.UniqueValues; + case XLConditionalFormatType.IsDuplicate: return ConditionalFormatValues.DuplicateValues; + case XLConditionalFormatType.ContainsText: return ConditionalFormatValues.ContainsText; + case XLConditionalFormatType.NotContainsText: return ConditionalFormatValues.NotContainsText; + case XLConditionalFormatType.StartsWith: return ConditionalFormatValues.BeginsWith; + case XLConditionalFormatType.EndsWith: return ConditionalFormatValues.EndsWith; + case XLConditionalFormatType.IsBlank: return ConditionalFormatValues.ContainsBlanks; + case XLConditionalFormatType.NotBlank: return ConditionalFormatValues.NotContainsBlanks; + case XLConditionalFormatType.IsError: return ConditionalFormatValues.ContainsErrors; + case XLConditionalFormatType.NotError: return ConditionalFormatValues.NotContainsErrors; + case XLConditionalFormatType.TimePeriod: return ConditionalFormatValues.TimePeriod; + case XLConditionalFormatType.AboveAverage: return ConditionalFormatValues.AboveAverage; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static ConditionalFormatValueObjectValues ToOpenXml(this XLCFContentType value) + { + switch (value) + { + case XLCFContentType.Number: return ConditionalFormatValueObjectValues.Number; + case XLCFContentType.Percent: return ConditionalFormatValueObjectValues.Percent; + case XLCFContentType.Maximum: return ConditionalFormatValueObjectValues.Max; + case XLCFContentType.Minimum: return ConditionalFormatValueObjectValues.Min; + case XLCFContentType.Formula: return ConditionalFormatValueObjectValues.Formula; + case XLCFContentType.Percentile: return ConditionalFormatValueObjectValues.Percentile; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static ConditionalFormattingOperatorValues ToOpenXml(this XLCFOperator value) + { + switch (value) + { + case XLCFOperator.LessThan: return ConditionalFormattingOperatorValues.LessThan; + case XLCFOperator.EqualOrLessThan: return ConditionalFormattingOperatorValues.LessThanOrEqual; + case XLCFOperator.Equal: return ConditionalFormattingOperatorValues.Equal; + case XLCFOperator.NotEqual: return ConditionalFormattingOperatorValues.NotEqual; + case XLCFOperator.EqualOrGreaterThan: return ConditionalFormattingOperatorValues.GreaterThanOrEqual; + case XLCFOperator.GreaterThan: return ConditionalFormattingOperatorValues.GreaterThan; + case XLCFOperator.Between: return ConditionalFormattingOperatorValues.Between; + case XLCFOperator.NotBetween: return ConditionalFormattingOperatorValues.NotBetween; + case XLCFOperator.Contains: return ConditionalFormattingOperatorValues.ContainsText; + case XLCFOperator.NotContains: return ConditionalFormattingOperatorValues.NotContains; + case XLCFOperator.StartsWith: return ConditionalFormattingOperatorValues.BeginsWith; + case XLCFOperator.EndsWith: return ConditionalFormattingOperatorValues.EndsWith; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static IconSetValues ToOpenXml(this XLIconSetStyle value) + { + switch (value) + { + case XLIconSetStyle.ThreeArrows: return IconSetValues.ThreeArrows; + case XLIconSetStyle.ThreeArrowsGray: return IconSetValues.ThreeArrowsGray; + case XLIconSetStyle.ThreeFlags: return IconSetValues.ThreeFlags; + case XLIconSetStyle.ThreeTrafficLights1: return IconSetValues.ThreeTrafficLights1; + case XLIconSetStyle.ThreeTrafficLights2: return IconSetValues.ThreeTrafficLights2; + case XLIconSetStyle.ThreeSigns: return IconSetValues.ThreeSigns; + case XLIconSetStyle.ThreeSymbols: return IconSetValues.ThreeSymbols; + case XLIconSetStyle.ThreeSymbols2: return IconSetValues.ThreeSymbols2; + case XLIconSetStyle.FourArrows: return IconSetValues.FourArrows; + case XLIconSetStyle.FourArrowsGray: return IconSetValues.FourArrowsGray; + case XLIconSetStyle.FourRedToBlack: return IconSetValues.FourRedToBlack; + case XLIconSetStyle.FourRating: return IconSetValues.FourRating; + case XLIconSetStyle.FourTrafficLights: return IconSetValues.FourTrafficLights; + case XLIconSetStyle.FiveArrows: return IconSetValues.FiveArrows; + case XLIconSetStyle.FiveArrowsGray: return IconSetValues.FiveArrowsGray; + case XLIconSetStyle.FiveRating: return IconSetValues.FiveRating; + case XLIconSetStyle.FiveQuarters: return IconSetValues.FiveQuarters; + + #region default + + default: + throw new ArgumentOutOfRangeException("Not implemented value!"); + + #endregion default + } + } + + public static ImagePartType ToOpenXml(this XLPictureFormat value) + { + return Enum.Parse(typeof(ImagePartType), value.ToString()).CastTo(); + } + + public static Xdr.EditAsValues ToOpenXml(this XLPicturePlacement value) + { + switch (value) + { + case XLPicturePlacement.FreeFloating: + return Xdr.EditAsValues.Absolute; + case XLPicturePlacement.Move: + return Xdr.EditAsValues.OneCell; + case XLPicturePlacement.MoveAndSize: + return Xdr.EditAsValues.TwoCell; + default: + throw new ArgumentOutOfRangeException("Not implemented value!"); + } + } + + #endregion To OpenXml + + #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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + 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 default + } + } + + public static XLPhoneticAlignment ToClosedXml(this PhoneticAlignmentValues value) + { + switch (value) + { + case PhoneticAlignmentValues.Center: + return XLPhoneticAlignment.Center; + + case PhoneticAlignmentValues.Distributed: + return XLPhoneticAlignment.Distributed; + + case PhoneticAlignmentValues.Left: + return XLPhoneticAlignment.Left; + + case PhoneticAlignmentValues.NoControl: + return XLPhoneticAlignment.NoControl; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLPhoneticType ToClosedXml(this PhoneticValues value) + { + switch (value) + { + case PhoneticValues.FullWidthKatakana: return XLPhoneticType.FullWidthKatakana; + case PhoneticValues.HalfWidthKatakana: + return XLPhoneticType.HalfWidthKatakana; + + case PhoneticValues.Hiragana: + return XLPhoneticType.Hiragana; + + case PhoneticValues.NoConversion: + return XLPhoneticType.NoConversion; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLPivotSummary ToClosedXml(this DataConsolidateFunctionValues value) + { + switch (value) + { + case DataConsolidateFunctionValues.Sum: return XLPivotSummary.Sum; + case DataConsolidateFunctionValues.Count: return XLPivotSummary.Count; + case DataConsolidateFunctionValues.Average: return XLPivotSummary.Average; + case DataConsolidateFunctionValues.Minimum: return XLPivotSummary.Minimum; + case DataConsolidateFunctionValues.Maximum: return XLPivotSummary.Maximum; + case DataConsolidateFunctionValues.Product: return XLPivotSummary.Product; + case DataConsolidateFunctionValues.CountNumbers: return XLPivotSummary.CountNumbers; + case DataConsolidateFunctionValues.StandardDeviation: return XLPivotSummary.StandardDeviation; + case DataConsolidateFunctionValues.StandardDeviationP: return XLPivotSummary.PopulationStandardDeviation; + case DataConsolidateFunctionValues.Variance: return XLPivotSummary.Variance; + case DataConsolidateFunctionValues.VarianceP: return XLPivotSummary.PopulationVariance; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLPivotCalculation ToClosedXml(this ShowDataAsValues value) + { + switch (value) + { + case ShowDataAsValues.Normal: return XLPivotCalculation.Normal; + case ShowDataAsValues.Difference: return XLPivotCalculation.DifferenceFrom; + case ShowDataAsValues.Percent: return XLPivotCalculation.PercentageOf; + case ShowDataAsValues.PercentageDifference: return XLPivotCalculation.PercentageDifferenceFrom; + case ShowDataAsValues.RunTotal: return XLPivotCalculation.RunningTotal; + case ShowDataAsValues.PercentOfRaw: return XLPivotCalculation.PercentageOfRow; // There's a typo in the OpenXML SDK =) + case ShowDataAsValues.PercentOfColumn: return XLPivotCalculation.PercentageOfColumn; + case ShowDataAsValues.PercentOfTotal: return XLPivotCalculation.PercentageOfTotal; + case ShowDataAsValues.Index: return XLPivotCalculation.Index; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLFilterOperator ToClosedXml(this FilterOperatorValues value) + { + switch (value) + { + case FilterOperatorValues.Equal: return XLFilterOperator.Equal; + case FilterOperatorValues.NotEqual: return XLFilterOperator.NotEqual; + case FilterOperatorValues.GreaterThan: return XLFilterOperator.GreaterThan; + case FilterOperatorValues.LessThan: return XLFilterOperator.LessThan; + case FilterOperatorValues.GreaterThanOrEqual: return XLFilterOperator.EqualOrGreaterThan; + case FilterOperatorValues.LessThanOrEqual: return XLFilterOperator.EqualOrLessThan; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLFilterDynamicType ToClosedXml(this DynamicFilterValues value) + { + switch (value) + { + case DynamicFilterValues.AboveAverage: return XLFilterDynamicType.AboveAverage; + case DynamicFilterValues.BelowAverage: return XLFilterDynamicType.BelowAverage; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLSheetViewOptions ToClosedXml(this SheetViewValues value) + { + switch (value) + { + case SheetViewValues.Normal: return XLSheetViewOptions.Normal; + case SheetViewValues.PageBreakPreview: return XLSheetViewOptions.PageBreakPreview; + case SheetViewValues.PageLayout: return XLSheetViewOptions.PageLayout; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLLineStyle ToClosedXml(this Vml.StrokeLineStyleValues value) + { + switch (value) + { + case Vml.StrokeLineStyleValues.Single: return XLLineStyle.Single; + case Vml.StrokeLineStyleValues.ThickBetweenThin: return XLLineStyle.ThickBetweenThin; + case Vml.StrokeLineStyleValues.ThickThin: return XLLineStyle.ThickThin; + case Vml.StrokeLineStyleValues.ThinThick: return XLLineStyle.ThinThick; + case Vml.StrokeLineStyleValues.ThinThin: return XLLineStyle.ThinThin; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLConditionalFormatType ToClosedXml(this ConditionalFormatValues value) + { + switch (value) + { + case ConditionalFormatValues.Expression: return XLConditionalFormatType.Expression; + case ConditionalFormatValues.CellIs: return XLConditionalFormatType.CellIs; + case ConditionalFormatValues.ColorScale: return XLConditionalFormatType.ColorScale; + case ConditionalFormatValues.DataBar: return XLConditionalFormatType.DataBar; + case ConditionalFormatValues.IconSet: return XLConditionalFormatType.IconSet; + case ConditionalFormatValues.Top10: return XLConditionalFormatType.Top10; + case ConditionalFormatValues.UniqueValues: return XLConditionalFormatType.IsUnique; + case ConditionalFormatValues.DuplicateValues: return XLConditionalFormatType.IsDuplicate; + case ConditionalFormatValues.ContainsText: return XLConditionalFormatType.ContainsText; + case ConditionalFormatValues.NotContainsText: return XLConditionalFormatType.NotContainsText; + case ConditionalFormatValues.BeginsWith: return XLConditionalFormatType.StartsWith; + case ConditionalFormatValues.EndsWith: return XLConditionalFormatType.EndsWith; + case ConditionalFormatValues.ContainsBlanks: return XLConditionalFormatType.IsBlank; + case ConditionalFormatValues.NotContainsBlanks: return XLConditionalFormatType.NotBlank; + case ConditionalFormatValues.ContainsErrors: return XLConditionalFormatType.IsError; + case ConditionalFormatValues.NotContainsErrors: return XLConditionalFormatType.NotError; + case ConditionalFormatValues.TimePeriod: return XLConditionalFormatType.TimePeriod; + case ConditionalFormatValues.AboveAverage: return XLConditionalFormatType.AboveAverage; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLCFContentType ToClosedXml(this ConditionalFormatValueObjectValues value) + { + switch (value) + { + case ConditionalFormatValueObjectValues.Number: return XLCFContentType.Number; + case ConditionalFormatValueObjectValues.Percent: return XLCFContentType.Percent; + case ConditionalFormatValueObjectValues.Max: return XLCFContentType.Maximum; + case ConditionalFormatValueObjectValues.Min: return XLCFContentType.Minimum; + case ConditionalFormatValueObjectValues.Formula: return XLCFContentType.Formula; + case ConditionalFormatValueObjectValues.Percentile: return XLCFContentType.Percentile; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLCFOperator ToClosedXml(this ConditionalFormattingOperatorValues value) + { + switch (value) + { + case ConditionalFormattingOperatorValues.LessThan: return XLCFOperator.LessThan; + case ConditionalFormattingOperatorValues.LessThanOrEqual: return XLCFOperator.EqualOrLessThan; + case ConditionalFormattingOperatorValues.Equal: return XLCFOperator.Equal; + case ConditionalFormattingOperatorValues.NotEqual: return XLCFOperator.NotEqual; + case ConditionalFormattingOperatorValues.GreaterThanOrEqual: return XLCFOperator.EqualOrGreaterThan; + case ConditionalFormattingOperatorValues.GreaterThan: return XLCFOperator.GreaterThan; + case ConditionalFormattingOperatorValues.Between: return XLCFOperator.Between; + case ConditionalFormattingOperatorValues.NotBetween: return XLCFOperator.NotBetween; + case ConditionalFormattingOperatorValues.ContainsText: return XLCFOperator.Contains; + case ConditionalFormattingOperatorValues.NotContains: return XLCFOperator.NotContains; + case ConditionalFormattingOperatorValues.BeginsWith: return XLCFOperator.StartsWith; + case ConditionalFormattingOperatorValues.EndsWith: return XLCFOperator.EndsWith; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLIconSetStyle ToClosedXml(this IconSetValues value) + { + switch (value) + { + case IconSetValues.ThreeArrows: return XLIconSetStyle.ThreeArrows; + case IconSetValues.ThreeArrowsGray: return XLIconSetStyle.ThreeArrowsGray; + case IconSetValues.ThreeFlags: return XLIconSetStyle.ThreeFlags; + case IconSetValues.ThreeTrafficLights1: return XLIconSetStyle.ThreeTrafficLights1; + case IconSetValues.ThreeTrafficLights2: return XLIconSetStyle.ThreeTrafficLights2; + case IconSetValues.ThreeSigns: return XLIconSetStyle.ThreeSigns; + case IconSetValues.ThreeSymbols: return XLIconSetStyle.ThreeSymbols; + case IconSetValues.ThreeSymbols2: return XLIconSetStyle.ThreeSymbols2; + case IconSetValues.FourArrows: return XLIconSetStyle.FourArrows; + case IconSetValues.FourArrowsGray: return XLIconSetStyle.FourArrowsGray; + case IconSetValues.FourRedToBlack: return XLIconSetStyle.FourRedToBlack; + case IconSetValues.FourRating: return XLIconSetStyle.FourRating; + case IconSetValues.FourTrafficLights: return XLIconSetStyle.FourTrafficLights; + case IconSetValues.FiveArrows: return XLIconSetStyle.FiveArrows; + case IconSetValues.FiveArrowsGray: return XLIconSetStyle.FiveArrowsGray; + case IconSetValues.FiveRating: return XLIconSetStyle.FiveRating; + case IconSetValues.FiveQuarters: return XLIconSetStyle.FiveQuarters; + + #region default + + default: + throw new ApplicationException("Not implemented value!"); + + #endregion default + } + } + + public static XLPictureFormat ToClosedXml(this ImagePartType value) + { + return Enum.Parse(typeof(XLPictureFormat), value.ToString()).CastTo(); + } + + public static XLPicturePlacement ToClosedXml(this Xdr.EditAsValues value) + { + switch (value) + { + case Xdr.EditAsValues.Absolute: + return XLPicturePlacement.FreeFloating; + case Xdr.EditAsValues.OneCell: + return XLPicturePlacement.Move; + case Xdr.EditAsValues.TwoCell: + return XLPicturePlacement.MoveAndSize; + default: + throw new ArgumentOutOfRangeException(); + } + } + + #endregion To ClosedXml + } +} diff --git a/ClosedXML/Excel/IXLWorksheet.cs b/ClosedXML/Excel/IXLWorksheet.cs index a126e87..0ec5321 100644 --- a/ClosedXML/Excel/IXLWorksheet.cs +++ b/ClosedXML/Excel/IXLWorksheet.cs @@ -1,6 +1,7 @@ using ClosedXML.Excel.Drawings; using System; using System.Collections.Generic; +using System.Drawing; using System.IO; namespace ClosedXML.Excel @@ -436,6 +437,14 @@ Drawings.IXLPicture AddPicture(Stream stream, XLPictureFormat format); - Drawings.IXLPicture AddPicture(String name, Stream stream, XLPictureFormat format); + Drawings.IXLPicture AddPicture(Stream stream, XLPictureFormat format, String name); + + Drawings.IXLPicture AddPicture(Bitmap bitmap); + + Drawings.IXLPicture AddPicture(Bitmap bitmap, String name); + + Drawings.IXLPicture AddPicture(String imageFile); + + Drawings.IXLPicture AddPicture(String imageFile, String name); } } diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index 3037fd7..cd2f2c1 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -2525,7 +2525,15 @@ var worksheetDrawing = drawingsPart.WorksheetDrawing; - var imagePart = drawingsPart.AddImagePart(picture.Format.ToOpenXml(), context.RelIdGenerator.GetNext(RelType.Workbook)); + // Add namespaces + if (!worksheetDrawing.NamespaceDeclarations.Any(nd => nd.Value.Equals("http://schemas.openxmlformats.org/drawingml/2006/main"))) + worksheetDrawing.AddNamespaceDeclaration("a", "http://schemas.openxmlformats.org/drawingml/2006/main"); + + if (!worksheetDrawing.NamespaceDeclarations.Any(nd => nd.Value.Equals("http://schemas.openxmlformats.org/officeDocument/2006/relationships"))) + worksheetDrawing.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); + ///////// + + var imagePart = drawingsPart.AddImagePart(pic.Format.ToOpenXml(), context.RelIdGenerator.GetNext(RelType.Workbook)); using (var stream = new MemoryStream()) { @@ -2534,81 +2542,34 @@ imagePart.FeedData(stream); } - var extentsCx = ConvertToEnglishMetricUnits(pic.Width, pic.HorizontalResolution); - var extentsCy = ConvertToEnglishMetricUnits(pic.Height, pic.VerticalResolution); + var extentsCx = ConvertToEnglishMetricUnits(pic.Width, GraphicsUtils.Graphics.DpiX); + var extentsCy = ConvertToEnglishMetricUnits(pic.Height, GraphicsUtils.Graphics.DpiY); var nvps = worksheetDrawing.Descendants(); var nvpId = nvps.Any() ? (UInt32Value)worksheetDrawing.Descendants().Max(p => p.Id.Value) + 1 : 1U; - if (pic.IsAbsolute) + + Xdr.FromMarker fMark; + Xdr.ToMarker tMark; + switch (pic.Placement) { - Xdr.AbsoluteAnchor absoluteAnchor; - absoluteAnchor = new Xdr.AbsoluteAnchor( - new Xdr.Position - { - X = ConvertToEnglishMetricUnits(pic.Left, pic.HorizontalResolution), - Y = ConvertToEnglishMetricUnits(pic.Top, pic.VerticalResolution) - }, - new Xdr.Extent - { - Cx = extentsCx, - Cy = extentsCy - }, - new Xdr.Picture( - new Xdr.NonVisualPictureProperties( - new Xdr.NonVisualDrawingProperties { Id = nvpId, Name = pic.Name }, - new Xdr.NonVisualPictureDrawingProperties(new PictureLocks { NoChangeAspect = true, NoMove = true, NoResize = true }) - ), - new Xdr.BlipFill( - new Blip { Embed = drawingsPart.GetIdOfPart(imagePart), CompressionState = BlipCompressionValues.Print }, - new Stretch(new FillRectangle()) - ), - new Xdr.ShapeProperties( - new Transform2D( - new Offset { X = 0, Y = 0 }, - new Extents { Cx = extentsCx, Cy = extentsCy } - ), - new PresetGeometry { Preset = ShapeTypeValues.Rectangle } - ) - ), - new Xdr.ClientData() - ); - - worksheetDrawing.Append(absoluteAnchor); - } - else - { - Xdr.FromMarker fMark; - Xdr.ToMarker tMark; - if (pic.Markers.Count == 2) - { - var fromMarker = pic.Markers.First(); - fMark = new Xdr.FromMarker - { - ColumnId = new Xdr.ColumnId(fromMarker.GetZeroBasedColumn().ToString()), - RowId = new Xdr.RowId(fromMarker.GetZeroBasedRow().ToString()), - ColumnOffset = new Xdr.ColumnOffset((fromMarker.ColumnOffset + pic.Left).ToString()), - RowOffset = new Xdr.RowOffset((fromMarker.RowOffset + pic.Top).ToString()) - }; - - var toMarker = pic.Markers.Last(); - tMark = new Xdr.ToMarker - { - ColumnId = new Xdr.ColumnId(toMarker.GetZeroBasedColumn().ToString()), - RowId = new Xdr.RowId(toMarker.GetZeroBasedRow().ToString()), - ColumnOffset = new Xdr.ColumnOffset((toMarker.ColumnOffset + pic.Left).ToString()), - RowOffset = new Xdr.RowOffset((toMarker.RowOffset + pic.Top).ToString()) - }; - - Xdr.TwoCellAnchor cellAnchor; - cellAnchor = new Xdr.TwoCellAnchor( - fMark, - tMark, + case Drawings.XLPicturePlacement.FreeFloating: + var absoluteAnchor = new Xdr.AbsoluteAnchor( + new Xdr.Position + { + X = ConvertToEnglishMetricUnits(pic.Left, GraphicsUtils.Graphics.DpiX), + Y = ConvertToEnglishMetricUnits(pic.Top, GraphicsUtils.Graphics.DpiY) + }, + new Xdr.Extent + { + Cx = extentsCx, + Cy = extentsCy + }, new Xdr.Picture( new Xdr.NonVisualPictureProperties( new Xdr.NonVisualDrawingProperties { Id = nvpId, Name = pic.Name }, - new Xdr.NonVisualPictureDrawingProperties(new PictureLocks { NoChangeAspect = true, NoMove = true, NoResize = true }) + new Xdr.NonVisualPictureDrawingProperties(new PictureLocks { NoChangeAspect = true }) ), new Xdr.BlipFill( new Blip { Embed = drawingsPart.GetIdOfPart(imagePart), CompressionState = BlipCompressionValues.Print }, @@ -2625,21 +2586,65 @@ new Xdr.ClientData() ); - worksheetDrawing.Append(cellAnchor); - } - else if (pic.Markers.Count == 1) - { - var fromMarker = pic.Markers.First(); + worksheetDrawing.Append(absoluteAnchor); + break; + + case Drawings.XLPicturePlacement.MoveAndSize: + var moveAndSizeFromMarker = pic.Markers.First(); fMark = new Xdr.FromMarker { - ColumnId = new Xdr.ColumnId(fromMarker.GetZeroBasedColumn().ToString()), - RowId = new Xdr.RowId(fromMarker.GetZeroBasedRow().ToString()), - ColumnOffset = new Xdr.ColumnOffset((fromMarker.ColumnOffset + pic.Left).ToString()), - RowOffset = new Xdr.RowOffset((fromMarker.RowOffset + pic.Top).ToString()) + ColumnId = new Xdr.ColumnId((moveAndSizeFromMarker.ColumnId - 1).ToString()), + RowId = new Xdr.RowId((moveAndSizeFromMarker.RowId - 1).ToString()), + ColumnOffset = new Xdr.ColumnOffset((moveAndSizeFromMarker.ColumnOffset + pic.Left).ToString()), + RowOffset = new Xdr.RowOffset((moveAndSizeFromMarker.RowOffset + pic.Top).ToString()) }; - Xdr.OneCellAnchor cellAnchor; - cellAnchor = new Xdr.OneCellAnchor( + var moveAndSizeToMarker = pic.Markers.Last(); + tMark = new Xdr.ToMarker + { + ColumnId = new Xdr.ColumnId((moveAndSizeToMarker.ColumnId - 1).ToString()), + RowId = new Xdr.RowId((moveAndSizeToMarker.RowId - 1).ToString()), + ColumnOffset = new Xdr.ColumnOffset((moveAndSizeToMarker.ColumnOffset + pic.Left).ToString()), + RowOffset = new Xdr.RowOffset((moveAndSizeToMarker.RowOffset + pic.Top).ToString()) + }; + + var twoCellAnchor = new Xdr.TwoCellAnchor( + fMark, + tMark, + new Xdr.Picture( + new Xdr.NonVisualPictureProperties( + new Xdr.NonVisualDrawingProperties { Id = nvpId, Name = pic.Name }, + new Xdr.NonVisualPictureDrawingProperties(new PictureLocks { NoChangeAspect = true }) + ), + new Xdr.BlipFill( + new Blip { Embed = drawingsPart.GetIdOfPart(imagePart), CompressionState = BlipCompressionValues.Print }, + new Stretch(new FillRectangle()) + ), + new Xdr.ShapeProperties( + new Transform2D( + new Offset { X = 0, Y = 0 }, + new Extents { Cx = extentsCx, Cy = extentsCy } + ), + new PresetGeometry { Preset = ShapeTypeValues.Rectangle } + ) + ), + new Xdr.ClientData() + ); + + worksheetDrawing.Append(twoCellAnchor); + break; + + case Drawings.XLPicturePlacement.Move: + var moveFromMarker = pic.Markers.First(); + fMark = new Xdr.FromMarker + { + ColumnId = new Xdr.ColumnId((moveFromMarker.ColumnId - 1).ToString()), + RowId = new Xdr.RowId((moveFromMarker.RowId - 1).ToString()), + ColumnOffset = new Xdr.ColumnOffset((moveFromMarker.ColumnOffset + pic.Left).ToString()), + RowOffset = new Xdr.RowOffset((moveFromMarker.RowOffset + pic.Top).ToString()) + }; + + var oneCellAnchor = new Xdr.OneCellAnchor( fMark, new Xdr.Extent { @@ -2649,7 +2654,7 @@ new Xdr.Picture( new Xdr.NonVisualPictureProperties( new Xdr.NonVisualDrawingProperties { Id = nvpId, Name = pic.Name }, - new Xdr.NonVisualPictureDrawingProperties(new PictureLocks { NoChangeAspect = true, NoMove = true, NoResize = true }) + new Xdr.NonVisualPictureDrawingProperties(new PictureLocks { NoChangeAspect = true }) ), new Xdr.BlipFill( new Blip { Embed = drawingsPart.GetIdOfPart(imagePart), CompressionState = BlipCompressionValues.Print }, @@ -2666,8 +2671,8 @@ new Xdr.ClientData() ); - worksheetDrawing.Append(cellAnchor); - } + worksheetDrawing.Append(oneCellAnchor); + break; } } diff --git a/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/Excel/XLWorksheet.cs index a69ce58..a85a6dd 100644 --- a/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/Excel/XLWorksheet.cs @@ -3,6 +3,7 @@ using ClosedXML.Excel.Misc; using System; using System.Collections.Generic; +using System.Drawing; using System.IO; using System.Linq; using System.Text; @@ -11,16 +12,12 @@ { internal class XLWorksheet : XLRangeBase, IXLWorksheet { - #region Constants - - #endregion - #region Events public XLReentrantEnumerableSet RangeShiftedRows; public XLReentrantEnumerableSet RangeShiftedColumns; - #endregion + #endregion Events #region Fields @@ -33,7 +30,8 @@ private Double _rowHeight; private Boolean _tabActive; internal Boolean EventTrackingEnabled; - #endregion + + #endregion Fields #region Constructor @@ -88,10 +86,11 @@ Author = workbook.Author; } - #endregion + #endregion Constructor //private IXLStyle _style; private const String InvalidNameChars = @":\/?*[]"; + public string LegacyDrawingId; public Boolean LegacyDrawingIsNew; private Double _columnWidth; @@ -274,7 +273,6 @@ return LastColumnUsed(includeFormats); } - public IXLColumns Columns() { var retVal = new XLColumns(this); @@ -658,6 +656,7 @@ } private XLWorksheetVisibility _visibility; + public XLWorksheetVisibility Visibility { get { return _visibility; } @@ -707,7 +706,6 @@ return Protection.Unprotect(password); } - public new IXLRange Sort() { return GetRangeForSort().Sort(); @@ -933,6 +931,7 @@ } return rows; } + public IXLRows RowsUsed(Func predicate = null) { return RowsUsed(false, predicate); @@ -954,6 +953,7 @@ } return columns; } + public IXLColumns ColumnsUsed(Func predicate = null) { return ColumnsUsed(false, predicate); @@ -972,7 +972,7 @@ base.Dispose(); } - #endregion + #endregion IXLWorksheet Members #region Outlines @@ -1025,7 +1025,7 @@ return _rowOutlineCount.Count == 0 ? 0 : _rowOutlineCount.Where(kp => kp.Value > 0).Max(kp => kp.Key); } - #endregion + #endregion Outlines public HashSet GetStyleIds() { @@ -1040,8 +1040,8 @@ public XLRow FirstRowUsed(Boolean includeFormats) { using (var asRange = AsRange()) - using (var rngRow = asRange.FirstRowUsed(includeFormats)) - return rngRow != null ? Row(rngRow.RangeAddress.FirstAddress.RowNumber) : null; + using (var rngRow = asRange.FirstRowUsed(includeFormats)) + return rngRow != null ? Row(rngRow.RangeAddress.FirstAddress.RowNumber) : null; } public XLRow LastRowUsed() @@ -1052,8 +1052,8 @@ public XLRow LastRowUsed(Boolean includeFormats) { using (var asRange = AsRange()) - using (var rngRow = asRange.LastRowUsed(includeFormats)) - return rngRow != null ? Row(rngRow.RangeAddress.LastAddress.RowNumber) : null; + using (var rngRow = asRange.LastRowUsed(includeFormats)) + return rngRow != null ? Row(rngRow.RangeAddress.LastAddress.RowNumber) : null; } public XLColumn LastColumn() @@ -1084,8 +1084,8 @@ public XLColumn FirstColumnUsed(Boolean includeFormats) { using (var asRange = AsRange()) - using (var rngColumn = asRange.FirstColumnUsed(includeFormats)) - return rngColumn != null ? Column(rngColumn.RangeAddress.FirstAddress.ColumnNumber) : null; + using (var rngColumn = asRange.FirstColumnUsed(includeFormats)) + return rngColumn != null ? Column(rngColumn.RangeAddress.FirstAddress.ColumnNumber) : null; } public XLColumn LastColumnUsed() @@ -1096,8 +1096,8 @@ public XLColumn LastColumnUsed(Boolean includeFormats) { using (var asRange = AsRange()) - using (var rngColumn = asRange.LastColumnUsed(includeFormats)) - return rngColumn != null ? Column(rngColumn.RangeAddress.LastAddress.ColumnNumber) : null; + using (var rngColumn = asRange.LastColumnUsed(includeFormats)) + return rngColumn != null ? Column(rngColumn.RangeAddress.LastAddress.ColumnNumber) : null; } public XLRow Row(Int32 row) @@ -1280,7 +1280,7 @@ var fr = insertedRange.FirstRow(); var model = fr.RowAbove(); Int32 modelFirstColumn = model.RangeAddress.FirstAddress.ColumnNumber; - if (ConditionalFormats.Any(cf=>cf.Range.Intersects(model))) + if (ConditionalFormats.Any(cf => cf.Range.Intersects(model))) { for (Int32 co = firstColumn; co <= lastColumn; co++) { @@ -1296,14 +1296,13 @@ fr.Dispose(); } - internal void BreakConditionalFormatsIntoCells(List addresses) { var newConditionalFormats = new XLConditionalFormats(); SuspendEvents(); foreach (var conditionalFormat in ConditionalFormats) { - foreach (XLCell cell in conditionalFormat.Range.Cells(c=>!addresses.Contains(c.Address))) + foreach (XLCell cell in conditionalFormat.Range.Cells(c => !addresses.Contains(c.Address))) { var row = cell.Address.RowNumber; var column = cell.Address.ColumnLetter; @@ -1319,8 +1318,6 @@ ConditionalFormats = newConditionalFormats; } - - private void MoveNamedRangesRows(XLRange range, int rowsShifted, IXLNamedRanges namedRanges) { foreach (XLNamedRange nr in namedRanges) @@ -1347,7 +1344,7 @@ { if (RangeShiftedRows != null) { - foreach(var item in RangeShiftedRows) + foreach (var item in RangeShiftedRows) { item.Action(range, rowsShifted); } @@ -1358,7 +1355,7 @@ { if (RangeShiftedColumns != null) { - foreach(var item in RangeShiftedColumns) + foreach (var item in RangeShiftedColumns) { item.Action(range, columnsShifted); } @@ -1468,11 +1465,13 @@ public IXLConditionalFormats ConditionalFormats { get; private set; } private Boolean _eventTracking; + public void SuspendEvents() { _eventTracking = EventTrackingEnabled; EventTrackingEnabled = false; } + public void ResumeEvents() { EventTrackingEnabled = _eventTracking; @@ -1483,6 +1482,7 @@ public IXLCell ActiveCell { get; set; } private XLCalcEngine _calcEngine; + private XLCalcEngine CalcEngine { get { return _calcEngine ?? (_calcEngine = new XLCalcEngine(this)); } @@ -1497,24 +1497,62 @@ public IList Pictures { get; private set; } = new List(); - public Drawings.IXLPicture AddPicture(Stream stream, XLPictureFormat format) + private String GetNextPictureName() { - var picture = new XLPicture(stream, format); - Pictures.Add(picture); var pictureNumber = this.Pictures.Count; while (Pictures.Any(p => p.Name == $"Picture {pictureNumber}")) { pictureNumber++; } - picture.Name = $"Picture {pictureNumber}"; + return $"Picture {pictureNumber}"; + } + + public Drawings.IXLPicture AddPicture(Stream stream, XLPictureFormat format) + { + var picture = new XLPicture(this, stream, format); + Pictures.Add(picture); + picture.Name = GetNextPictureName(); return picture; } - public IXLPicture AddPicture(string name, Stream stream, XLPictureFormat format) + public IXLPicture AddPicture(Stream stream, XLPictureFormat format, string name) { var picture = AddPicture(stream, format); picture.Name = name; return picture; } + + public IXLPicture AddPicture(Bitmap bitmap) + { + var picture = new XLPicture(this, bitmap); + Pictures.Add(picture); + picture.Name = GetNextPictureName(); + return picture; + } + + public IXLPicture AddPicture(Bitmap bitmap, string name) + { + var picture = AddPicture(bitmap); + this.Name = name; + return picture; + } + + public IXLPicture AddPicture(string imageFile) + { + using (var bitmap = Image.FromFile(imageFile) as Bitmap) + { + var picture = new XLPicture(this, bitmap); + Pictures.Add(picture); + picture.Name = GetNextPictureName(); + return picture; + } + } + + public IXLPicture AddPicture(string imageFile, string name) + { + var picture = AddPicture(imageFile); + picture.Name = name; + return picture; + } } } diff --git a/ClosedXML/Utils/GraphicsUtils.cs b/ClosedXML/Utils/GraphicsUtils.cs index b5e6762..7507b08 100644 --- a/ClosedXML/Utils/GraphicsUtils.cs +++ b/ClosedXML/Utils/GraphicsUtils.cs @@ -7,7 +7,7 @@ { [ThreadStatic] private static Graphics threadLocalGraphics; - private static Graphics g + internal static Graphics Graphics { get { @@ -22,7 +22,7 @@ public static SizeF MeasureString(string s, Font font) { - SizeF result = g.MeasureString(s, font, Int32.MaxValue, StringFormat.GenericTypographic); + SizeF result = Graphics.MeasureString(s, font, Int32.MaxValue, StringFormat.GenericTypographic); return result; } } diff --git a/ClosedXML_Examples/ImageHandling/ImageAnchors.cs b/ClosedXML_Examples/ImageHandling/ImageAnchors.cs index 0a7e155..bcd12e8 100644 --- a/ClosedXML_Examples/ImageHandling/ImageAnchors.cs +++ b/ClosedXML_Examples/ImageHandling/ImageAnchors.cs @@ -11,7 +11,6 @@ { var wb = new XLWorkbook(); IXLWorksheet ws; - IXLPicture picture; using (Stream fs = Assembly.GetExecutingAssembly().GetManifestResourceStream("ClosedXML_Examples.Resources.ImageHandling.png")) { @@ -19,8 +18,8 @@ #region AbsoluteAnchor - ws.AddPicture("Image10", fs, XLPictureFormat.Png) - .SetAbsolute() + ws.AddPicture(fs, XLPictureFormat.Png, "Image10") + .WithPlacement(XLPicturePlacement.FreeFloating) .AtPosition(220, 150); #endregion AbsoluteAnchor @@ -28,14 +27,9 @@ #region OneCellAnchor fs.Position = 0; - ws.AddPicture("Image11", fs, XLPictureFormat.Png) - .SetAbsolute(false) - .AtPosition(0, 0) - .WithMarker(new XLMarker - { - ColumnId = 1, - RowId = 1 - }); + ws.AddPicture(fs, XLPictureFormat.Png, "Image11") + .WithPlacement(XLPicturePlacement.MoveAndSize) + .AtPosition(ws.Cell(1, 1)); #endregion OneCellAnchor @@ -44,21 +38,9 @@ #region TwoCellAnchor fs.Position = 0; - picture = ws.AddPicture("Image20", fs, XLPictureFormat.Png) - .SetAbsolute(false) - .AtPosition(0, 0); - - picture.Markers.Add(new XLMarker - { - ColumnId = 5, - RowId = 6 - }); - - picture.Markers.Add(new XLMarker - { - ColumnId = 7, - RowId = 9 - }); + ws.AddPicture(fs, XLPictureFormat.Png, "Image20") + .WithPlacement(XLPicturePlacement.MoveAndSize) + .AtPosition(ws.Cell(6, 5), ws.Cell(9, 7)); #endregion TwoCellAnchor diff --git a/ClosedXML_Examples/ImageHandling/ImageFormats.cs b/ClosedXML_Examples/ImageHandling/ImageFormats.cs index c4afd77..0ba4193 100644 --- a/ClosedXML_Examples/ImageHandling/ImageFormats.cs +++ b/ClosedXML_Examples/ImageHandling/ImageFormats.cs @@ -17,14 +17,9 @@ #region Jpeg ws = wb.Worksheets.Add("Jpg"); - ws.AddPicture("JpegImage", fs, XLPictureFormat.Jpeg) - .SetAbsolute(false) - .AtPosition(0, 0) - .WithMarker(new XLMarker - { - ColumnId = 1, - RowId = 1 - }); + ws.AddPicture(fs, XLPictureFormat.Jpeg, "JpegImage") + .WithPlacement(XLPicturePlacement.Move) + .AtPosition(ws.Cell(1, 1)); #endregion Jpeg } @@ -34,14 +29,9 @@ #region Png ws = wb.Worksheets.Add("Png"); - ws.AddPicture("PngImage", fs, XLPictureFormat.Png) - .SetAbsolute(false) - .AtPosition(0, 0) - .WithMarker(new XLMarker - { - ColumnId = 1, - RowId = 1 - }); + ws.AddPicture(fs, XLPictureFormat.Png, "PngImage") + .WithPlacement(XLPicturePlacement.Move) + .AtPosition(ws.Cell(1, 1)); #endregion Png diff --git a/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML_Tests/ClosedXML_Tests.csproj index 47cca6a..558c518 100644 --- a/ClosedXML_Tests/ClosedXML_Tests.csproj +++ b/ClosedXML_Tests/ClosedXML_Tests.csproj @@ -275,6 +275,7 @@ +