summaryrefslogtreecommitdiff
path: root/datavalidation.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2021-08-26 00:48:18 +0800
committerxuri <xuri.me@gmail.com>2021-08-26 00:48:18 +0800
commit7d9b9275bd14556bfcaab7f1d3690b1e54ab75e8 (patch)
tree97d0744f427446f6f2f5117acf943995c48b5394 /datavalidation.go
parentcd030d4aa81582e8bc04d029c0be6e42eff9ea47 (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.go36
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