summaryrefslogtreecommitdiff
path: root/datavalidation.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2021-07-29 00:03:57 +0800
committerxuri <xuri.me@gmail.com>2021-07-29 00:03:57 +0800
commit7dbf88f221f278075d4ff9e153b21236d0826c33 (patch)
tree508e171a8702bb52f017239d1f210cad076c19c4 /datavalidation.go
parente9ae9b45b20a5df7e3aa15afcfac83ecb13394c6 (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.go13
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
}