github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgExcel/UnmarshalerFile.go (about) 1 package kmgExcel 2 3 import ( 4 "fmt" 5 6 "github.com/bronze1man/kmg/typeTransform" 7 ) 8 9 /* 10 Unmarshal excel into a array of a struct 11 12 you must put data in first sheet 13 accept []struct{Key1 value;Key2 value} or []map[string]string 14 first excel row as struct key,remain excel row as struct value 15 type can not convert will fail 16 lack keys will be ignore 17 */ 18 func UnmarshalFile(filePath string, obj interface{}) (err error) { 19 rawArray, err := XlsxFile2Array(filePath) 20 if err != nil { 21 return 22 } 23 gridArray, err := TitleArrayToGrid(rawArray[0]) 24 if err != nil { 25 return 26 } 27 err = typeTransform.Transform(gridArray, obj) 28 if err != nil { 29 return 30 } 31 return 32 } 33 34 //Unmarshal excel into a array of a struct and skip some line from start 35 func UnmarshalFileSkipLine(filePath string, obj interface{}, skipline int) (err error) { 36 rawArray, err := XlsxFile2Array(filePath) 37 if err != nil { 38 return 39 } 40 if len(rawArray[0]) < skipline+1 { 41 return fmt.Errorf("[kmgExcel.UnmarshalFileSkipLine]filePath:%s len(rawArray[0])<skipline+1 len(rawArray[0]):%d skipline:%d", 42 filePath, len(rawArray[0]), skipline+1) 43 } 44 gridArray, err := TitleArrayToGrid(rawArray[0][skipline:]) 45 if err != nil { 46 return 47 } 48 err = typeTransform.Transform(gridArray, obj) 49 if err != nil { 50 return 51 } 52 return 53 }