From 7dbf88f221f278075d4ff9e153b21236d0826c33 Mon Sep 17 00:00:00 2001 From: xuri Date: Thu, 29 Jul 2021 00:03:57 +0800 Subject: This closes #971, closes #972 and closes #974 - Escape XML character in the drop list - Fix incorrect character count limit in the drop list - Fix Excel time parse issue in some case - Fix custom number format month parse issue in some case - Fix corrupted file generated caused by concurrency adding pictures --- datavalidation.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'datavalidation.go') diff --git a/datavalidation.go b/datavalidation.go index 0f8508b..a95f4d0 100644 --- a/datavalidation.go +++ b/datavalidation.go @@ -14,6 +14,7 @@ package excelize import ( "fmt" "strings" + "unicode/utf16" ) // DataValidationType defined the type of data validation. @@ -111,10 +112,10 @@ func (dd *DataValidation) SetInput(title, msg string) { // SetDropList data validation list. func (dd *DataValidation) SetDropList(keys []string) error { formula := "\"" + strings.Join(keys, ",") + "\"" - if dataValidationFormulaStrLen < len(formula) { + if dataValidationFormulaStrLen < len(utf16.Encode([]rune(formula))) { return fmt.Errorf(dataValidationFormulaStrLenErr) } - dd.Formula1 = fmt.Sprintf("%s", formula) + dd.Formula1 = formula dd.Type = convDataValidationType(typeList) return nil } @@ -123,12 +124,12 @@ func (dd *DataValidation) SetDropList(keys []string) error { func (dd *DataValidation) SetRange(f1, f2 float64, t DataValidationType, o DataValidationOperator) error { formula1 := fmt.Sprintf("%f", f1) formula2 := fmt.Sprintf("%f", f2) - if dataValidationFormulaStrLen+21 < len(dd.Formula1) || dataValidationFormulaStrLen+21 < len(dd.Formula2) { + if dataValidationFormulaStrLen < len(utf16.Encode([]rune(dd.Formula1))) || dataValidationFormulaStrLen < len(utf16.Encode([]rune(dd.Formula2))) { return fmt.Errorf(dataValidationFormulaStrLenErr) } - dd.Formula1 = fmt.Sprintf("%s", formula1) - dd.Formula2 = fmt.Sprintf("%s", formula2) + dd.Formula1 = formula1 + dd.Formula2 = formula2 dd.Type = convDataValidationType(t) dd.Operator = convDataValidationOperatior(o) return nil @@ -148,7 +149,7 @@ func (dd *DataValidation) SetRange(f1, f2 float64, t DataValidationType, o DataV // func (dd *DataValidation) SetSqrefDropList(sqref string, isCurrentSheet bool) error { if isCurrentSheet { - dd.Formula1 = fmt.Sprintf("%s", sqref) + dd.Formula1 = sqref dd.Type = convDataValidationType(typeList) return nil } -- cgit v1.2.1