Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets
修订版 | dea7ba0ec43a4c29a6642d02b6edc73b8b0369f0 (tree) |
---|---|
时间 | 2019-01-01 19:18:42 |
作者 | Rafael Barros <admin@rafa...> |
Commiter | xuri |
@@ -31,10 +31,9 @@ import ( | ||
31 | 31 | // |
32 | 32 | func (f *File) GetRows(sheet string) [][]string { |
33 | 33 | xlsx := f.workSheetReader(sheet) |
34 | - rows := [][]string{} | |
35 | 34 | name, ok := f.sheetMap[trimSheetName(sheet)] |
36 | 35 | if !ok { |
37 | - return rows | |
36 | + return [][]string{} | |
38 | 37 | } |
39 | 38 | if xlsx != nil { |
40 | 39 | output, _ := xml.Marshal(f.Sheet[name]) |
@@ -44,15 +43,12 @@ func (f *File) GetRows(sheet string) [][]string { | ||
44 | 43 | d := f.sharedStringsReader() |
45 | 44 | var inElement string |
46 | 45 | var r xlsxRow |
47 | - var row []string | |
48 | 46 | tr, tc := f.getTotalRowsCols(name) |
49 | - for i := 0; i < tr; i++ { | |
50 | - row = []string{} | |
51 | - for j := 0; j <= tc; j++ { | |
52 | - row = append(row, "") | |
53 | - } | |
54 | - rows = append(rows, row) | |
47 | + rows := make([][]string, tr) | |
48 | + for i := range rows { | |
49 | + rows[i] = make([]string, tc+1) | |
55 | 50 | } |
51 | + var row int | |
56 | 52 | decoder := xml.NewDecoder(bytes.NewReader(f.readXML(name))) |
57 | 53 | for { |
58 | 54 | token, _ := decoder.Token() |
@@ -70,12 +66,15 @@ func (f *File) GetRows(sheet string) [][]string { | ||
70 | 66 | c := TitleToNumber(strings.Map(letterOnlyMapF, colCell.R)) |
71 | 67 | val, _ := colCell.getValueFrom(f, d) |
72 | 68 | rows[cr][c] = val |
69 | + if val != "" { | |
70 | + row = r.R | |
71 | + } | |
73 | 72 | } |
74 | 73 | } |
75 | 74 | default: |
76 | 75 | } |
77 | 76 | } |
78 | - return rows | |
77 | + return rows[:row] | |
79 | 78 | } |
80 | 79 | |
81 | 80 | // Rows defines an iterator to a sheet |