From a7ea62a41c1b4237fa5ef1739c1dc13e41caa18d Mon Sep 17 00:00:00 2001 From: nlimpid Date: Wed, 10 Jan 2018 23:00:23 +0800 Subject: [PATCH] fix the wrong number of count rest empty rows --- lib.go | 2 +- lib_test.go | 12 ++++++++++++ testdocs/empty_rows_in_the_rest.xlsx | Bin 0 -> 6292 bytes 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 testdocs/empty_rows_in_the_rest.xlsx diff --git a/lib.go b/lib.go index ffad65d1..707d1f66 100644 --- a/lib.go +++ b/lib.go @@ -629,7 +629,7 @@ func readRowsFromSheet(Worksheet *xlsxWorksheet, file *File, sheet *Sheet, rowLi } // insert trailing empty rows for the rest of the file - for ; insertRowIndex < maxRow; insertRowIndex++ { + for ; insertRowIndex < rowCount; insertRowIndex++ { rows[insertRowIndex] = makeEmptyRow(sheet) } return rows, cols, colCount, rowCount diff --git a/lib_test.go b/lib_test.go index 4b811482..4c20b1e2 100644 --- a/lib_test.go +++ b/lib_test.go @@ -1346,3 +1346,15 @@ func (l *LibSuite) TestRoundTripFileWithNoSheetCols(c *C) { c.Assert(err, IsNil) os.Remove("testdocs/after_write.xlsx") } + +func (l *LibSuite) TestReadRestEmptyRowsFromSheet(c *C) { + originalXlFile, err := OpenFile("testdocs/empty_rows_in_the_rest.xlsx") + c.Assert(err, IsNil) + for _, sheet := range originalXlFile.Sheets { + for _, row := range sheet.Rows { + if row == nil { + c.Errorf("Row should not be nil") + } + } + } +} diff --git a/testdocs/empty_rows_in_the_rest.xlsx b/testdocs/empty_rows_in_the_rest.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..80b37d574780f25b561ebcaa43b6991c10691e67 GIT binary patch literal 6292 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 literal 0 HcmV?d00001