diff --git a/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/Excel/Ranges/XLRangeBase.cs
index 3484ed6..60d12d4 100644
--- a/ClosedXML/Excel/Ranges/XLRangeBase.cs
+++ b/ClosedXML/Excel/Ranges/XLRangeBase.cs
@@ -1388,7 +1388,7 @@
{
var modelFirstColumn = model.FirstCellUsed(true);
var modelLastColumn = model.LastCellUsed(true);
- if (modelLastColumn != null)
+ if (modelFirstColumn != null && modelLastColumn != null)
{
Int32 firstCoReturned = modelFirstColumn.Address.ColumnNumber
- model.RangeAddress.FirstAddress.ColumnNumber + 1;
diff --git a/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML_Tests/ClosedXML_Tests.csproj
index f1c0f09..9a88883 100644
--- a/ClosedXML_Tests/ClosedXML_Tests.csproj
+++ b/ClosedXML_Tests/ClosedXML_Tests.csproj
@@ -249,11 +249,11 @@
+
-
@@ -265,4 +265,4 @@
-->
-
+
\ No newline at end of file
diff --git a/ClosedXML_Tests/Excel/Loading/LoadingTests.cs b/ClosedXML_Tests/Excel/Loading/LoadingTests.cs
index 5412c0a..3568007 100644
--- a/ClosedXML_Tests/Excel/Loading/LoadingTests.cs
+++ b/ClosedXML_Tests/Excel/Loading/LoadingTests.cs
@@ -8,7 +8,7 @@
namespace ClosedXML_Tests.Excel
{
- // Tests in this fixture test only the successful loading of existing Excel files,
+ // Tests in this fixture test only the successful loading of existing Excel files,
// i.e. we test that ClosedXML doesn't choke on a given input file
// These tests DO NOT test that ClosedXML successfully recognises all the Excel parts or that it can successfully save those parts again.
[TestFixture]
@@ -19,7 +19,8 @@
{
var files = new List()
{
- @"Misc\TableWithCustomTheme.xlsx"
+ @"Misc\TableWithCustomTheme.xlsx",
+ @"Misc\EmptyTable.xlsx"
};
foreach (var file in files)
@@ -27,5 +28,17 @@
TestHelper.LoadFile(file);
}
}
+
+ [Test]
+ public void CanLoadAndManipulateFileWithEmptyTable()
+ {
+ using (var stream = TestHelper.GetStreamFromResource(TestHelper.GetResourcePath(@"Misc\EmptyTable.xlsx")))
+ using (var wb = new XLWorkbook(stream))
+ {
+ var ws = wb.Worksheets.First();
+ var table = ws.Tables.First();
+ table.DataRange.InsertRowsBelow(5);
+ }
+ }
}
-}
\ No newline at end of file
+}
diff --git a/ClosedXML_Tests/Resource/Misc/EmptyTable.xlsx b/ClosedXML_Tests/Resource/Misc/EmptyTable.xlsx
new file mode 100644
index 0000000..e902376
--- /dev/null
+++ b/ClosedXML_Tests/Resource/Misc/EmptyTable.xlsx
Binary files differ
diff --git a/ClosedXML_Tests/TestHelper.cs b/ClosedXML_Tests/TestHelper.cs
index 07576df..36b5933 100644
--- a/ClosedXML_Tests/TestHelper.cs
+++ b/ClosedXML_Tests/TestHelper.cs
@@ -90,12 +90,20 @@
#pragma warning restore 162
}
- public static void LoadFile(string filePartName)
+ public static string GetResourcePath(string filePartName)
+ {
+ return filePartName.Replace('\\', '.').TrimStart('.');
+ }
+
+ public static Stream GetStreamFromResource(string resourcePath)
{
var extractor = new ResourceFileExtractor(null, ".Resource.");
+ return extractor.ReadFileFromResToStream(resourcePath);
+ }
- string resourcePath = filePartName.Replace('\\', '.').TrimStart('.');
- using (var stream = extractor.ReadFileFromResToStream(resourcePath))
+ public static void LoadFile(string filePartName)
+ {
+ using (var stream = GetStreamFromResource(GetResourcePath(filePartName)))
{
var wb = new XLWorkbook(stream);
wb.Dispose();