diff options
author | ducquangkstn <ducquang.kstn@gmail.com> | 2019-10-18 13:57:35 +0700 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2019-10-18 14:57:35 +0800 |
commit | 866fda230028a3a9e6ff1c5234e432ad850d3c6b (patch) | |
tree | c106df97c87b9230e2f5010f3e232978f974b6c5 | |
parent | 2e791fa433def282ee2e7a5049a46fc4a76796cf (diff) |
fix #503 rows next issue
-rw-r--r-- | rows.go | 6 | ||||
-rw-r--r-- | rows_test.go | 20 |
2 files changed, 23 insertions, 3 deletions
@@ -57,7 +57,8 @@ type Rows struct { // Next will return true if find the next row element. func (rows *Rows) Next() bool { - return rows.curRow < len(rows.rows) + rows.curRow++ + return rows.curRow <= len(rows.rows) } // Error will return the error when the find next row element @@ -67,8 +68,7 @@ func (rows *Rows) Error() error { // Columns return the current row's column values func (rows *Rows) Columns() ([]string, error) { - curRow := rows.rows[rows.curRow] - rows.curRow++ + curRow := rows.rows[rows.curRow-1] columns := make([]string, len(curRow.C)) d := rows.f.sharedStringsReader() diff --git a/rows_test.go b/rows_test.go index a99a594..ba81f9f 100644 --- a/rows_test.go +++ b/rows_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRows(t *testing.T) { @@ -41,6 +42,25 @@ func TestRows(t *testing.T) { } } +// test bug https://github.com/360EntSecGroup-Skylar/excelize/issues/502 +func TestRowsIterator(t *testing.T) { + const ( + sheet2 = "Sheet2" + expectedNumRow = 11 + ) + xlsx, err := OpenFile(filepath.Join("test", "Book1.xlsx")) + require.NoError(t, err) + + rows, err := xlsx.Rows(sheet2) + require.NoError(t, err) + var rowCount int + for rows.Next() { + rowCount++ + require.True(t, rowCount <= expectedNumRow, "rowCount is greater than expected") + } + assert.Equal(t, expectedNumRow, rowCount) +} + func TestRowsError(t *testing.T) { xlsx, err := OpenFile(filepath.Join("test", "Book1.xlsx")) if !assert.NoError(t, err) { |