|
|
|
|
@ -25,7 +25,17 @@ func (f *File) GetRows(sheet string) [][]string {
|
|
|
|
|
return rows
|
|
|
|
|
}
|
|
|
|
|
var inElement string
|
|
|
|
|
var r xlsxRow
|
|
|
|
|
var row []string
|
|
|
|
|
tr, tc := f.getTotalRowsCols(sheet)
|
|
|
|
|
for i := 0; i < tr; i++ {
|
|
|
|
|
row = []string{}
|
|
|
|
|
for j := 0; j <= tc; j++ {
|
|
|
|
|
row = append(row, "")
|
|
|
|
|
}
|
|
|
|
|
rows = append(rows, row)
|
|
|
|
|
}
|
|
|
|
|
decoder = xml.NewDecoder(strings.NewReader(f.readXML(name)))
|
|
|
|
|
for {
|
|
|
|
|
token, _ := decoder.Token()
|
|
|
|
|
if token == nil {
|
|
|
|
|
@ -35,14 +45,14 @@ func (f *File) GetRows(sheet string) [][]string {
|
|
|
|
|
case xml.StartElement:
|
|
|
|
|
inElement = startElement.Name.Local
|
|
|
|
|
if inElement == "row" {
|
|
|
|
|
var r xlsxRow
|
|
|
|
|
r = xlsxRow{}
|
|
|
|
|
decoder.DecodeElement(&r, &startElement)
|
|
|
|
|
cr := r.R - 1
|
|
|
|
|
for _, colCell := range r.C {
|
|
|
|
|
c := titleToNumber(strings.Map(letterOnlyMapF, colCell.R))
|
|
|
|
|
val, _ := colCell.getValueFrom(f, d)
|
|
|
|
|
row = append(row, val)
|
|
|
|
|
rows[cr][c] = val
|
|
|
|
|
}
|
|
|
|
|
rows = append(rows, row)
|
|
|
|
|
row = row[:0]
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
@ -50,6 +60,39 @@ func (f *File) GetRows(sheet string) [][]string {
|
|
|
|
|
return rows
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// getTotalRowsCols provides a function to get total columns and rows in a
|
|
|
|
|
// sheet.
|
|
|
|
|
func (f *File) getTotalRowsCols(sheet string) (int, int) {
|
|
|
|
|
name := "xl/worksheets/" + strings.ToLower(sheet) + ".xml"
|
|
|
|
|
decoder := xml.NewDecoder(strings.NewReader(f.readXML(name)))
|
|
|
|
|
var inElement string
|
|
|
|
|
var r xlsxRow
|
|
|
|
|
var tr, tc int
|
|
|
|
|
for {
|
|
|
|
|
token, _ := decoder.Token()
|
|
|
|
|
if token == nil {
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
switch startElement := token.(type) {
|
|
|
|
|
case xml.StartElement:
|
|
|
|
|
inElement = startElement.Name.Local
|
|
|
|
|
if inElement == "row" {
|
|
|
|
|
r = xlsxRow{}
|
|
|
|
|
decoder.DecodeElement(&r, &startElement)
|
|
|
|
|
tr = r.R
|
|
|
|
|
for _, colCell := range r.C {
|
|
|
|
|
col := titleToNumber(strings.Map(letterOnlyMapF, colCell.R))
|
|
|
|
|
if col > tc {
|
|
|
|
|
tc = col
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return tr, tc
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SetRowHeight provides a function to set the height of a single row.
|
|
|
|
|
// For example:
|
|
|
|
|
//
|
|
|
|
|
|