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 @@
+