Skip to content

Commit daf32a3

Browse files
committed
fix: datavalidation list error, formula > 255 issue qax-os#339
1 parent 0c5c99e commit daf32a3

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

datavalidation.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ func (dd *DataValidation) SetInput(title, msg string) {
108108

109109
// SetDropList data validation list.
110110
func (dd *DataValidation) SetDropList(keys []string) error {
111-
dd.Formula1 = "\"" + strings.Join(keys, ",") + "\""
111+
formula := "\"" + strings.Join(keys, ",") + "\""
112+
if dataValidationFormulaStrLen < len(formula) {
113+
return fmt.Errorf(dataValidationFormulaStrLenErr)
114+
}
115+
dd.Formula1 = formula
112116
dd.Type = convDataValidationType(typeList)
113117
return nil
114118
}

datavalidation_test.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,14 @@ func TestDataValidationError(t *testing.T) {
7272
}
7373

7474
dvRange = NewDataValidation(true)
75-
dvRange.SetDropList(make([]string, 258))
76-
77-
err = dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan)
75+
err = dvRange.SetDropList(make([]string, 258))
76+
if dvRange.Formula1 != "" {
77+
t.Errorf("data validation error. Formula1 must be empty!")
78+
return
79+
}
7880
assert.EqualError(t, err, "data validation must be 0-255 characters")
81+
dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan)
82+
dvRange.SetSqref("A9:B10")
7983

8084
xlsx.AddDataValidation("Sheet1", dvRange)
8185
if !assert.NoError(t, xlsx.SaveAs(resultFile)) {

0 commit comments

Comments
 (0)