From 9053893b01fa80275dc0b873dbb6d56b27ad0c57 Mon Sep 17 00:00:00 2001 From: rentiansheng Date: Thu, 10 May 2018 19:27:00 +0800 Subject: [PATCH] sheet.row get row by index from sheet issue #388 --- sheet.go | 19 +++++++++++++++++++ sheet_test.go | 13 +++++++++++++ 2 files changed, 32 insertions(+) diff --git a/sheet.go b/sheet.go index 771a5af1..9dff5a0a 100644 --- a/sheet.go +++ b/sheet.go @@ -56,6 +56,25 @@ func (s *Sheet) AddRow() *Row { return row } +// Make sure we always have as many Rows as we do cells. +func (s *Sheet) maybeAddRow(rowCount int) { + if rowCount > s.MaxRow { + loopCnt := rowCount - s.MaxRow + for i := 0; i < loopCnt; i++ { + + row := &Row{Sheet: s} + s.Rows = append(s.Rows, row) + } + s.MaxRow = rowCount + } +} + +// Make sure we always have as many Rows as we do cells. +func (s *Sheet) Row(idx int) *Row { + s.maybeAddRow(idx + 1) + return s.Rows[idx] +} + // Make sure we always have as many Cols as we do cells. func (s *Sheet) maybeAddCol(cellCount int) { if cellCount > s.MaxCol { diff --git a/sheet_test.go b/sheet_test.go index 0202121d..dd41f3e4 100644 --- a/sheet_test.go +++ b/sheet_test.go @@ -21,6 +21,19 @@ func (s *SheetSuite) TestAddRow(c *C) { c.Assert(len(sheet.Rows), Equals, 1) } +// Test we can get row by index from Sheet +func (s *SheetSuite) TestGetRowByIndex(c *C) { + var f *File + f = NewFile() + sheet, _ := f.AddSheet("MySheet") + row := sheet.Row(10) + c.Assert(row, NotNil) + c.Assert(len(sheet.Rows), Equals, 10) + row = sheet.Row(2) + c.Assert(row, NotNil) + c.Assert(len(sheet.Rows), Equals, 10) +} + func (s *SheetSuite) TestMakeXLSXSheetFromRows(c *C) { file := NewFile() sheet, _ := file.AddSheet("Sheet1")