Browse Source

add datavalidation test and fixed struct bug issue #240

rentiansheng 7 years ago
parent
commit
24a8d64f93
3 changed files with 48 additions and 20 deletions
  1. 14 18
      datavalidation.go
  2. 32 0
      datavalidation_test.go
  3. 2 2
      xmlWorksheet.go

+ 14 - 18
datavalidation.go

@@ -33,9 +33,9 @@ type DataValidationErrorStyle int
 // Data validation error styles
 const (
 	_ DataValidationErrorStyle = iota
-	DataValidationStyleStop
-	DataValidationStyleWarning
-	DataValidationStyleInformation
+	DataValidationErrorStyleStop
+	DataValidationErrorStyleWarning
+	DataValidationErrorStyleInformation
 )
 
 // Data validation error styles
@@ -71,16 +71,16 @@ func NewDataValidation(allowBlank bool) *DataValidation {
 }
 
 // SetError set error notice
-func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg *string) {
-	dd.Error = msg
-	dd.ErrorTitle = title
+func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg string) {
+	dd.Error = &msg
+	dd.ErrorTitle = &title
 	strStyle := styleStop
 	switch style {
-	case DataValidationStyleStop:
+	case DataValidationErrorStyleStop:
 		strStyle = styleStop
-	case DataValidationStyleWarning:
+	case DataValidationErrorStyleWarning:
 		strStyle = styleWarning
-	case DataValidationStyleInformation:
+	case DataValidationErrorStyleInformation:
 		strStyle = styleInformation
 
 	}
@@ -89,10 +89,10 @@ func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg *s
 }
 
 // SetInput set prompt notice
-func (dd *DataValidation) SetInput(title, msg *string) {
+func (dd *DataValidation) SetInput(title, msg string) {
 	dd.ShowInputMessage = convBoolToStr(true)
-	dd.PromptTitle = title
-	dd.Prompt = msg
+	dd.PromptTitle = &title
+	dd.Prompt = &msg
 }
 
 // SetDropList data validation list
@@ -109,7 +109,7 @@ func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValid
 	if dataValidationFormulaStrLen < len(dd.Formula1) || dataValidationFormulaStrLen < len(dd.Formula2) {
 		return fmt.Errorf(dataValidationFormulaStrLenErr)
 	}
-	switch o {
+	/*switch o {
 	case DataValidationOperatorBetween:
 		if f1 > f2 {
 			tmp := formula1
@@ -122,7 +122,7 @@ func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValid
 			formula1 = formula2
 			formula2 = tmp
 		}
-	}
+	}*/
 
 	dd.Formula1 = formula1
 	dd.Formula2 = formula2
@@ -190,7 +190,3 @@ func (f *File) AddDataValidation(sheet string, dv *DataValidation) {
 	xlsx.DataValidations.DataValidation = append(xlsx.DataValidations.DataValidation, dv)
 	xlsx.DataValidations.Count = len(xlsx.DataValidations.DataValidation)
 }
-
-func (f *File) GetDataValidation(sheet, sqref string) {
-
-}

+ 32 - 0
datavalidation_test.go

@@ -0,0 +1,32 @@
+package excelize
+
+import (
+	"testing"
+)
+
+func TestDataValidation(t *testing.T) {
+	xlsx := NewFile()
+
+	dvRange := NewDataValidation(true)
+	dvRange.Sqref = "A1:B2"
+	dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorBetween)
+	dvRange.SetError(DataValidationErrorStyleStop, "error title", "error body")
+	xlsx.AddDataValidation("Sheet1", dvRange)
+
+	dvRange = NewDataValidation(true)
+	dvRange.Sqref = "A3:B4"
+	dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan)
+	dvRange.SetInput("input title", "input body")
+	xlsx.AddDataValidation("Sheet1", dvRange)
+
+	dvRange = NewDataValidation(true)
+	dvRange.Sqref = "A5:B6"
+	dvRange.SetDropList([]string{"1", "2", "3"})
+	xlsx.AddDataValidation("Sheet1", dvRange)
+
+	// Test write file to given path.
+	err := xlsx.SaveAs("./test/Bookdatavalition.xlsx")
+	if err != nil {
+		t.Error(err)
+	}
+}

+ 2 - 2
xmlWorksheet.go

@@ -18,7 +18,7 @@ type xlsxWorksheet struct {
 	MergeCells            *xlsxMergeCells              `xml:"mergeCells"`
 	PhoneticPr            *xlsxPhoneticPr              `xml:"phoneticPr"`
 	ConditionalFormatting []*xlsxConditionalFormatting `xml:"conditionalFormatting"`
-	DataValidations       *xlsxDataValidations         `xml:"dataValidations"`
+	DataValidations       *xlsxDataValidations         `xml:"dataValidations,omitempty"`
 	Hyperlinks            *xlsxHyperlinks              `xml:"hyperlinks"`
 	PrintOptions          *xlsxPrintOptions            `xml:"printOptions"`
 	PageMargins           *xlsxPageMargins             `xml:"pageMargins"`
@@ -298,7 +298,7 @@ type xlsxDataValidations struct {
 	DisablePrompts bool              `xml:"disablePrompts,attr,omitempty"`
 	XWindow        int               `xml:"xWindow,attr,omitempty"`
 	YWindow        int               `xml:"yWindow,attr,omitempty"`
-	DataValidation []*DataValidation `xml:"dataValidation,innerxml"`
+	DataValidation []*DataValidation `xml:"dataValidation"`
 }
 
 type DataValidation struct {