diff --git a/ClosedXML/Excel/Drawings/IXLMarker.cs b/ClosedXML/Excel/Drawings/IXLMarker.cs index 048020b..fd52192 100644 --- a/ClosedXML/Excel/Drawings/IXLMarker.cs +++ b/ClosedXML/Excel/Drawings/IXLMarker.cs @@ -11,5 +11,15 @@ 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/XLMarker.cs b/ClosedXML/Excel/Drawings/XLMarker.cs index 1ee61ff..1ed01be 100644 --- a/ClosedXML/Excel/Drawings/XLMarker.cs +++ b/ClosedXML/Excel/Drawings/XLMarker.cs @@ -16,6 +16,9 @@ { set { + if (value < 1 || value > XLHelper.MaxColumnNumber) + throw new ArgumentOutOfRangeException(String.Format("Column number must be between 1 and {0}", + XLHelper.MaxColumnNumber)); this.colId = value; } get @@ -28,6 +31,9 @@ { set { + if (value < 1 || value > XLHelper.MaxRowNumber) + throw new ArgumentOutOfRangeException(String.Format("Row number must be between 1 and {0}", + XLHelper.MaxRowNumber)); this.rowId = value; } get @@ -59,5 +65,15 @@ return this.rowOffset; } } + + public Int32 GetZeroBasedColumn() + { + return colId - 1; + } + + public Int32 GetZeroBasedRow() + { + return rowId - 1; + } } } diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index 0237a65..fd42245 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -2579,15 +2579,15 @@ { fMark = new Xdr.FromMarker { - ColumnId = new Xdr.ColumnId(markers[0].ColumnId.ToString()), - RowId = new Xdr.RowId(markers[0].RowId.ToString()), + ColumnId = new Xdr.ColumnId(markers[0].GetZeroBasedColumn().ToString()), + RowId = new Xdr.RowId(markers[0].GetZeroBasedRow().ToString()), ColumnOffset = new Xdr.ColumnOffset((markers[0].ColumnOffset + picture.OffsetX).ToString()), RowOffset = new Xdr.RowOffset((markers[0].RowOffset + picture.OffsetY).ToString()) }; tMark = new Xdr.ToMarker { - ColumnId = new Xdr.ColumnId(markers[1].ColumnId.ToString()), - RowId = new Xdr.RowId(markers[1].RowId.ToString()), + ColumnId = new Xdr.ColumnId(markers[1].GetZeroBasedColumn().ToString()), + RowId = new Xdr.RowId(markers[1].GetZeroBasedRow().ToString()), ColumnOffset = new Xdr.ColumnOffset((markers[1].ColumnOffset + picture.OffsetX).ToString()), RowOffset = new Xdr.RowOffset((markers[1].RowOffset + picture.OffsetY).ToString()) }; @@ -2622,8 +2622,8 @@ { fMark = new Xdr.FromMarker { - ColumnId = new Xdr.ColumnId(markers[0].ColumnId.ToString()), - RowId = new Xdr.RowId(markers[0].RowId.ToString()), + ColumnId = new Xdr.ColumnId(markers[0].GetZeroBasedColumn().ToString()), + RowId = new Xdr.RowId(markers[0].GetZeroBasedRow().ToString()), ColumnOffset = new Xdr.ColumnOffset((markers[0].ColumnOffset + picture.OffsetX).ToString()), RowOffset = new Xdr.RowOffset((markers[0].RowOffset + picture.OffsetY).ToString()) }; diff --git a/ClosedXML_Examples/ImageHandling/ImageAnchors.cs b/ClosedXML_Examples/ImageHandling/ImageAnchors.cs index 351ab4b..7425a9f 100644 --- a/ClosedXML_Examples/ImageHandling/ImageAnchors.cs +++ b/ClosedXML_Examples/ImageHandling/ImageAnchors.cs @@ -45,8 +45,8 @@ pic.AddMarker(new XLMarker { - ColumnId = 0, - RowId = 0 + ColumnId = 1, + RowId = 1 }); ws.AddPicture(pic); @@ -68,14 +68,14 @@ pic.AddMarker(new XLMarker { - ColumnId = 4, - RowId = 5 + ColumnId = 5, + RowId = 6 }); pic.AddMarker(new XLMarker { - ColumnId = 6, - RowId = 8 + ColumnId = 7, + RowId = 9 }); ws.AddPicture(pic); #endregion diff --git a/ClosedXML_Examples/ImageHandling/ImageFormats.cs b/ClosedXML_Examples/ImageHandling/ImageFormats.cs index c420bb7..68d0bb0 100644 --- a/ClosedXML_Examples/ImageHandling/ImageFormats.cs +++ b/ClosedXML_Examples/ImageHandling/ImageFormats.cs @@ -30,8 +30,8 @@ pic.AddMarker(new XLMarker { - ColumnId = 0, - RowId = 0 + ColumnId = 1, + RowId = 1 }); ws.AddPicture(pic); @@ -54,8 +54,8 @@ pic.AddMarker(new XLMarker { - ColumnId = 0, - RowId = 0 + ColumnId = 1, + RowId = 1 }); ws.AddPicture(pic);