diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs
index 5725233..5b467ae 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumn.cs
@@ -184,5 +184,8 @@
///
/// Specify what you want to clear.
new IXLColumn Clear(XLClearOptions clearOptions = XLClearOptions.ContentsAndFormats);
+
+ IXLRangeColumn ColumnUsed(Boolean includeFormats = false);
+
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs
index 5942db6..cca5504 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs
@@ -712,5 +712,10 @@
}
#endregion
+
+ public IXLRangeColumn ColumnUsed(Boolean includeFormats = false)
+ {
+ return Column(FirstCellUsed(includeFormats), LastCellUsed(includeFormats));
+ }
}
}
\ No newline at end of file
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeColumn.cs
index c60a326..16ebea1 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeColumn.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeColumn.cs
@@ -109,6 +109,8 @@
///
/// Specify what you want to clear.
new IXLRangeColumn Clear(XLClearOptions clearOptions = XLClearOptions.ContentsAndFormats);
+
+ IXLRangeColumn ColumnUsed(Boolean includeFormats = false);
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeRow.cs
index ac4592f..b69a706 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeRow.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/IXLRangeRow.cs
@@ -112,6 +112,8 @@
///
/// Specify what you want to clear.
new IXLRangeRow Clear(XLClearOptions clearOptions = XLClearOptions.ContentsAndFormats);
+
+ IXLRangeRow RowUsed(Boolean includeFormats = false);
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeColumn.cs
index b245522..513c218 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeColumn.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeColumn.cs
@@ -357,5 +357,10 @@
base.Clear(clearOptions);
return this;
}
+
+ public IXLRangeColumn ColumnUsed(Boolean includeFormats = false)
+ {
+ return Column(FirstCellUsed(includeFormats), LastCellUsed(includeFormats));
+ }
}
}
\ No newline at end of file
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeRow.cs
index a703a95..077b861 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeRow.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeRow.cs
@@ -342,5 +342,10 @@
base.Clear(clearOptions);
return this;
}
+
+ public IXLRangeRow RowUsed(Boolean includeFormats = false)
+ {
+ return Row(FirstCellUsed(includeFormats), LastCellUsed(includeFormats));
+ }
}
}
\ No newline at end of file
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs
index 69bd602..39ffec0 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/IXLRow.cs
@@ -187,5 +187,7 @@
///
/// Specify what you want to clear.
new IXLRow Clear(XLClearOptions clearOptions = XLClearOptions.ContentsAndFormats);
+
+ IXLRangeRow RowUsed(Boolean includeFormats = false);
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs
index 70fa176..c9842c1 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs
@@ -627,5 +627,10 @@
}
#endregion
+
+ public IXLRangeRow RowUsed(Boolean includeFormats = false)
+ {
+ return Row(FirstCellUsed(includeFormats), LastCellUsed(includeFormats));
+ }
}
}
\ No newline at end of file
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs
index 8c4681f..9379676 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs
@@ -594,7 +594,7 @@
{
var retVal = new XLRanges();
var rangePairs = namedRanges.Split(',');
- foreach (var r in rangePairs.SelectMany(Ranges))
+ foreach (var r in rangePairs.Select(s=>Range(s.Trim())))
retVal.Add(r);
return retVal;
}
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj
index a77c372..9f6bf64 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj
@@ -70,12 +70,14 @@
+
+
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Columns/ColumnsTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Columns/ColumnsTests.cs
new file mode 100644
index 0000000..67bf566
--- /dev/null
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Columns/ColumnsTests.cs
@@ -0,0 +1,29 @@
+using ClosedXML.Excel;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace ClosedXML_Tests.Excel
+{
+ ///
+ /// Summary description for UnitTest1
+ ///
+ [TestClass]
+ public class ColumnTests
+ {
+
+ [TestMethod]
+ public void ColumnUsed()
+ {
+ var wb = new XLWorkbook();
+ var ws = wb.Worksheets.Add("Sheet1");
+ ws.Cell(2, 1).SetValue("Test");
+ ws.Cell(3, 1).SetValue("Test");
+
+ var fromColumn = ws.Column(1).ColumnUsed();
+ Assert.AreEqual("A2:A3", fromColumn.RangeAddress.ToStringRelative());
+
+ var fromRange = ws.Range("A1:A5").FirstColumn().ColumnUsed();
+ Assert.AreEqual("A2:A3", fromRange.RangeAddress.ToStringRelative());
+ }
+
+ }
+}
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Rows/RowsTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Rows/RowsTests.cs
new file mode 100644
index 0000000..ca96498
--- /dev/null
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Rows/RowsTests.cs
@@ -0,0 +1,29 @@
+using ClosedXML.Excel;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace ClosedXML_Tests.Excel
+{
+ ///
+ /// Summary description for UnitTest1
+ ///
+ [TestClass]
+ public class RowTests
+ {
+
+ [TestMethod]
+ public void RowUsed()
+ {
+ var wb = new XLWorkbook();
+ var ws = wb.Worksheets.Add("Sheet1");
+ ws.Cell(1, 2).SetValue("Test");
+ ws.Cell(1, 3).SetValue("Test");
+
+ var fromRow = ws.Row(1).RowUsed();
+ Assert.AreEqual("B1:C1", fromRow.RangeAddress.ToStringRelative());
+
+ var fromRange = ws.Range("A1:E1").FirstRow().RowUsed();
+ Assert.AreEqual("B1:C1", fromRange.RangeAddress.ToStringRelative());
+ }
+
+ }
+}
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx
index 432af55..8bdd923 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx
Binary files differ
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx
index d0bb839..0e274f3 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx
Binary files differ
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx
index 92138e3..7cbf7d4 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx
Binary files differ