浏览代码

added mustMatch parameter

xormplus 9 年之前
父节点
当前提交
6e562e9edd
共有 3 个文件被更改,包括 16 次插入16 次删除
  1. 6 6
      databook.go
  2. 2 2
      dataset.go
  3. 8 8
      sessionplus.go

+ 6 - 6
databook.go

@@ -19,14 +19,14 @@ func NewDatabook() *Databook {
 	return db
 	return db
 }
 }
 
 
-func NewDatabookWithData(sheetName map[string]string, data interface{}, headers ...map[string][]string) (*Databook, error) {
+func NewDatabookWithData(sheetName map[string]string, data interface{}, mustMatch bool, headers ...map[string][]string) (*Databook, error) {
 	s := len(sheetName)
 	s := len(sheetName)
 
 
 	switch data.(type) {
 	switch data.(type) {
 	case map[string]*tablib.Dataset:
 	case map[string]*tablib.Dataset:
 		dataModel1 := data.(map[string]*tablib.Dataset)
 		dataModel1 := data.(map[string]*tablib.Dataset)
 		d1 := len(dataModel1)
 		d1 := len(dataModel1)
-		if s != d1 {
+		if s != d1 && mustMatch {
 			return nil, ErrParamsType
 			return nil, ErrParamsType
 		}
 		}
 
 
@@ -49,7 +49,7 @@ func NewDatabookWithData(sheetName map[string]string, data interface{}, headers
 
 
 		h := len(headers[0])
 		h := len(headers[0])
 
 
-		if s != h || s != d2 {
+		if (s != h || s != d2) && mustMatch {
 			return nil, ErrParamsType
 			return nil, ErrParamsType
 		}
 		}
 		databook := tablib.NewDatabook()
 		databook := tablib.NewDatabook()
@@ -61,7 +61,7 @@ func NewDatabookWithData(sheetName map[string]string, data interface{}, headers
 				return nil, ErrParamsType
 				return nil, ErrParamsType
 			}
 			}
 
 
-			dataset, err := NewDatasetWithData(headers[0][k], dataModel2[k])
+			dataset, err := NewDatasetWithData(headers[0][k], dataModel2[k], mustMatch)
 			if err != nil {
 			if err != nil {
 				return nil, err
 				return nil, err
 			}
 			}
@@ -75,7 +75,7 @@ func NewDatabookWithData(sheetName map[string]string, data interface{}, headers
 	}
 	}
 }
 }
 
 
-func (databook *Databook) AddSheet(title string, data interface{}, headers ...[]string) error {
+func (databook *Databook) AddSheet(title string, data interface{}, mustMatch bool, headers ...[]string) error {
 
 
 	switch data.(type) {
 	switch data.(type) {
 	case *tablib.Dataset:
 	case *tablib.Dataset:
@@ -87,7 +87,7 @@ func (databook *Databook) AddSheet(title string, data interface{}, headers ...[]
 		if len(headers) != 1 {
 		if len(headers) != 1 {
 			return ErrParamsType
 			return ErrParamsType
 		}
 		}
-		dataset, err := NewDatasetWithData(headers[0], dataSlice)
+		dataset, err := NewDatasetWithData(headers[0], dataSlice, mustMatch)
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}

+ 2 - 2
dataset.go

@@ -14,7 +14,7 @@ func NewDataset(headers []string) *tablib.Dataset {
 }
 }
 
 
 // NewDatasetWithData creates a new Dataset.
 // NewDatasetWithData creates a new Dataset.
-func NewDatasetWithData(headers []string, data interface{}) (*tablib.Dataset, error) {
+func NewDatasetWithData(headers []string, data interface{}, mustMatch bool) (*tablib.Dataset, error) {
 	if data == nil {
 	if data == nil {
 		return tablib.NewDatasetWithData(headers, nil), nil
 		return tablib.NewDatasetWithData(headers, nil), nil
 	}
 	}
@@ -29,7 +29,7 @@ func NewDatasetWithData(headers []string, data interface{}) (*tablib.Dataset, er
 			if len(dataSlice[0]) == 0 {
 			if len(dataSlice[0]) == 0 {
 				return tablib.NewDatasetWithData(headers, make([][]interface{}, len(dataSlice))), nil
 				return tablib.NewDatasetWithData(headers, make([][]interface{}, len(dataSlice))), nil
 			} else {
 			} else {
-				if n != len(dataSlice[0]) {
+				if n != len(dataSlice[0]) && mustMatch {
 					return nil, ErrParamsType
 					return nil, ErrParamsType
 				}
 				}
 				mapHeaders := make(map[string]int, n)
 				mapHeaders := make(map[string]int, n)

+ 8 - 8
sessionplus.go

@@ -183,7 +183,7 @@ func (resultMap *ResultMap) SaveAsCSV(filename string, headers []string, perm os
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, true)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -201,7 +201,7 @@ func (resultMap *ResultMap) SaveAsTSV(filename string, headers []string, perm os
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, true)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -219,7 +219,7 @@ func (resultMap *ResultMap) SaveAsHTML(filename string, headers []string, perm o
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, true)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -234,7 +234,7 @@ func (resultMap *ResultMap) SaveAsXML(filename string, headers []string, perm os
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, false)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -252,7 +252,7 @@ func (resultMap *ResultMap) SaveAsXMLWithTagNamePrefixIndent(tagName string, pri
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, false)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -270,7 +270,7 @@ func (resultMap *ResultMap) SaveAsYAML(filename string, headers []string, perm o
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, false)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -288,7 +288,7 @@ func (resultMap *ResultMap) SaveAsJSON(filename string, headers []string, perm o
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, false)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -306,7 +306,7 @@ func (resultMap *ResultMap) SaveAsXLSX(filename string, headers []string, perm o
 		return resultMap.Error
 		return resultMap.Error
 	}
 	}
 
 
-	dataset, err := NewDatasetWithData(headers, resultMap.Results)
+	dataset, err := NewDatasetWithData(headers, resultMap.Results, true)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}