diff options
author | xuri <xuri.me@gmail.com> | 2021-07-29 00:03:57 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2021-07-29 00:03:57 +0800 |
commit | 7dbf88f221f278075d4ff9e153b21236d0826c33 (patch) | |
tree | 508e171a8702bb52f017239d1f210cad076c19c4 /datavalidation.go | |
parent | e9ae9b45b20a5df7e3aa15afcfac83ecb13394c6 (diff) |
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
Diffstat (limited to 'datavalidation.go')
-rw-r--r-- | datavalidation.go | 13 |
1 files changed, 7 insertions, 6 deletions
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("<formula1>%s</formula1>", 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("<formula1>%s</formula1>", formula1) - dd.Formula2 = fmt.Sprintf("<formula2>%s</formula2>", 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("<formula1>%s</formula1>", sqref) + dd.Formula1 = sqref dd.Type = convDataValidationType(typeList) return nil } |