diff options
author | xuri <xuri.me@gmail.com> | 2021-08-26 00:48:18 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2021-08-26 00:48:18 +0800 |
commit | 7d9b9275bd14556bfcaab7f1d3690b1e54ab75e8 (patch) | |
tree | 97d0744f427446f6f2f5117acf943995c48b5394 /datavalidation.go | |
parent | cd030d4aa81582e8bc04d029c0be6e42eff9ea47 (diff) |
This closes #1012, support specify the formula in the data validation range, and update the documentation for the `AddPicture`
Diffstat (limited to 'datavalidation.go')
-rw-r--r-- | datavalidation.go | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/datavalidation.go b/datavalidation.go index e182ebe..047a53c 100644 --- a/datavalidation.go +++ b/datavalidation.go @@ -128,13 +128,37 @@ func (dd *DataValidation) SetDropList(keys []string) error { return nil } -// SetRange provides function to set data validation range in drop list. -func (dd *DataValidation) SetRange(f1, f2 float64, t DataValidationType, o DataValidationOperator) error { - if math.Abs(f1) > math.MaxFloat32 || math.Abs(f2) > math.MaxFloat32 { - return ErrDataValidationRange +// SetRange provides function to set data validation range in drop list, only +// accepts int, float64, or string data type formula argument. +func (dd *DataValidation) SetRange(f1, f2 interface{}, t DataValidationType, o DataValidationOperator) error { + var formula1, formula2 string + switch v := f1.(type) { + case int: + formula1 = fmt.Sprintf("<formula1>%d</formula1>", int(v)) + case float64: + if math.Abs(float64(v)) > math.MaxFloat32 { + return ErrDataValidationRange + } + formula1 = fmt.Sprintf("<formula1>%.17g</formula1>", float64(v)) + case string: + formula1 = fmt.Sprintf("<formula1>%s</formula1>", string(v)) + default: + return ErrParameterInvalid + } + switch v := f2.(type) { + case int: + formula2 = fmt.Sprintf("<formula2>%d</formula2>", int(v)) + case float64: + if math.Abs(float64(v)) > math.MaxFloat32 { + return ErrDataValidationRange + } + formula2 = fmt.Sprintf("<formula2>%.17g</formula2>", float64(v)) + case string: + formula2 = fmt.Sprintf("<formula2>%s</formula2>", string(v)) + default: + return ErrParameterInvalid } - dd.Formula1 = fmt.Sprintf("<formula1>%.17g</formula1>", f1) - dd.Formula2 = fmt.Sprintf("<formula2>%.17g</formula2>", f2) + dd.Formula1, dd.Formula2 = formula1, formula2 dd.Type = convDataValidationType(t) dd.Operator = convDataValidationOperatior(o) return nil |