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