|
@@ -0,0 +1,123 @@
|
|
|
|
|
+package xlsx
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "strings"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type DataValidationType int
|
|
|
|
|
+
|
|
|
|
|
+// Data validation types
|
|
|
|
|
+/*const (
|
|
|
|
|
+ _ DataValidationType = iota
|
|
|
|
|
+ TypeNone
|
|
|
|
|
+ TypeCustom
|
|
|
|
|
+ TypeDate
|
|
|
|
|
+ TypeDecimal
|
|
|
|
|
+ TypeList
|
|
|
|
|
+ TypeTextLeng
|
|
|
|
|
+ TypeTime
|
|
|
|
|
+ TypeWhole
|
|
|
|
|
+)*/
|
|
|
|
|
+
|
|
|
|
|
+// Data validation types
|
|
|
|
|
+const (
|
|
|
|
|
+ typeNone = "none"
|
|
|
|
|
+ typeCustom = "custom"
|
|
|
|
|
+ typeDate = "date"
|
|
|
|
|
+ typeDecimal = "decimal"
|
|
|
|
|
+ typeList = "list"
|
|
|
|
|
+ typeTextLeng = "textLength"
|
|
|
|
|
+ typeTime = "time"
|
|
|
|
|
+ typeWhole = "whole"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type DataValidationErrorStyle int
|
|
|
|
|
+
|
|
|
|
|
+// Data validation error styles
|
|
|
|
|
+const (
|
|
|
|
|
+ _ DataValidationErrorStyle = iota
|
|
|
|
|
+ StyleStop
|
|
|
|
|
+ StyleWarning
|
|
|
|
|
+ StyleInformation
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+// Data validation error styles
|
|
|
|
|
+const (
|
|
|
|
|
+ styleStop = "stop"
|
|
|
|
|
+ styleWarning = "warning"
|
|
|
|
|
+ styleInformation = "information"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+/*
|
|
|
|
|
+type DataValidationOperator int
|
|
|
|
|
+
|
|
|
|
|
+// Data validation operators
|
|
|
|
|
+const (
|
|
|
|
|
+ _DataValidationOperator = iota
|
|
|
|
|
+ OperatorBetween = "between"
|
|
|
|
|
+ OperatorEqual = "equal"
|
|
|
|
|
+ OperatorGreaterThan = "greaterThan"
|
|
|
|
|
+ OperatorGgreaterThanOrEqual = "greaterThanOrEqual"
|
|
|
|
|
+ OperatorLessThan = "lessThan"
|
|
|
|
|
+ OperatorLessThanOrEqual = "lessThanOrEqual"
|
|
|
|
|
+ OperatorNotBetween = "notBetween"
|
|
|
|
|
+ OperatorNotEqual = "notEqual"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+// Data validation operators
|
|
|
|
|
+const (
|
|
|
|
|
+ operatorBetween = "between"
|
|
|
|
|
+ operatorEQUAL = "equal"
|
|
|
|
|
+ operatorGREATERTHAN = "greaterThan"
|
|
|
|
|
+ operatorGREATERTHANOREQUAL = "greaterThanOrEqual"
|
|
|
|
|
+ operatorLESSTHAN = "lessThan"
|
|
|
|
|
+ operatorLESSTHANOREQUAL = "lessThanOrEqual"
|
|
|
|
|
+ operatorNOTBETWEEN = "notBetween"
|
|
|
|
|
+ operatorNOTEQUAL = "notEqual"
|
|
|
|
|
+)
|
|
|
|
|
+*/
|
|
|
|
|
+
|
|
|
|
|
+// NewDataValidation return data validation struct
|
|
|
|
|
+func NewXlsxCellDataValidation(allowBlank, ShowInputMessage, showErrorMessage bool) *xlsxCellDataValidation {
|
|
|
|
|
+ return &xlsxCellDataValidation{
|
|
|
|
|
+ AllowBlank: convBoolToStr(allowBlank),
|
|
|
|
|
+ ShowErrorMessage: convBoolToStr(showErrorMessage),
|
|
|
|
|
+ ShowInputMessage: convBoolToStr(ShowInputMessage),
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// SetError set error notice
|
|
|
|
|
+func (dd *xlsxCellDataValidation) SetError(style DataValidationErrorStyle, title, msg *string) {
|
|
|
|
|
+ dd.Error = msg
|
|
|
|
|
+ dd.ErrorTitle = title
|
|
|
|
|
+ strStyle := styleStop
|
|
|
|
|
+ switch style {
|
|
|
|
|
+ case StyleStop:
|
|
|
|
|
+ strStyle = styleStop
|
|
|
|
|
+ case StyleWarning:
|
|
|
|
|
+ strStyle = styleWarning
|
|
|
|
|
+ case StyleInformation:
|
|
|
|
|
+ strStyle = styleInformation
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ dd.ErrorStyle = &strStyle
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// SetInput set prompt notice
|
|
|
|
|
+func (dd *xlsxCellDataValidation) SetInput(title, msg *string) {
|
|
|
|
|
+ dd.PromptTitle = title
|
|
|
|
|
+ dd.Prompt = msg
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (dd *xlsxCellDataValidation) SetDropList(keys []string) {
|
|
|
|
|
+ dd.Formula1 = "\"" + strings.Join(keys, ",") + "\""
|
|
|
|
|
+ dd.Type = typeList
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// convBoolToStr convert boolean to string , false to 0, true to 1
|
|
|
|
|
+func convBoolToStr(bl bool) string {
|
|
|
|
|
+ if bl {
|
|
|
|
|
+ return "1"
|
|
|
|
|
+ }
|
|
|
|
|
+ return "0"
|
|
|
|
|
+}
|