1
0
mirror of https://github.com/pbnjay/grate.git synced 2026-05-16 17:16:40 +02:00

don't load all sheets at once in xlsx

This commit is contained in:
Jeremy Jay
2021-02-12 10:48:57 -05:00
parent 26e4b46e83
commit bbe0d2dbb4
2 changed files with 6 additions and 10 deletions
+2
View File
@@ -32,6 +32,8 @@ type Sheet struct {
iterRow int
}
var errNotLoaded = errors.New("xlsx: sheet not loaded")
type row struct {
// each value must be one of: int, float64, string, or time.Time
cols []interface{}
+4 -10
View File
@@ -118,13 +118,6 @@ func Open(filename string) (grate.Source, error) {
}
}
for _, s := range d.sheets {
err = s.parseSheet()
if err != nil {
return nil, err
}
}
return d, nil
}
@@ -146,9 +139,7 @@ func (d *Document) openXML(name string) (*xml.Decoder, io.Closer, error) {
func (d *Document) List() ([]string, error) {
res := make([]string, 0, len(d.sheets))
for _, s := range d.sheets {
//if (s.HiddenState & 0x03) == 0 {
res = append(res, s.name)
//}
}
return res, nil
}
@@ -156,7 +147,10 @@ func (d *Document) List() ([]string, error) {
func (d *Document) Get(sheetName string) (grate.Collection, error) {
for _, s := range d.sheets {
if s.name == sheetName {
return s, nil
if s.err == errNotLoaded {
s.err = s.parseSheet()
}
return s, s.err
}
}
return nil, errors.New("xlsx: sheet not found")