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);