forked from p30928647/excelize
Add function doc and fix golint error
This commit is contained in:
parent
24a8d64f93
commit
562ba3d234
|
@ -5,16 +5,17 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// DataValidationType defined the type of data validation.
|
||||||
type DataValidationType int
|
type DataValidationType int
|
||||||
|
|
||||||
// Data validation types
|
// Data validation types.
|
||||||
const (
|
const (
|
||||||
_DataValidationType = iota
|
_DataValidationType = iota
|
||||||
typeNone //inline use
|
typeNone // inline use
|
||||||
DataValidationTypeCustom
|
DataValidationTypeCustom
|
||||||
DataValidationTypeDate
|
DataValidationTypeDate
|
||||||
DataValidationTypeDecimal
|
DataValidationTypeDecimal
|
||||||
typeList //inline use
|
typeList // inline use
|
||||||
DataValidationTypeTextLeng
|
DataValidationTypeTextLeng
|
||||||
DataValidationTypeTime
|
DataValidationTypeTime
|
||||||
// DataValidationTypeWhole Integer
|
// DataValidationTypeWhole Integer
|
||||||
|
@ -28,9 +29,10 @@ const (
|
||||||
dataValidationFormulaStrLenErr = "data validation must be 0-255 characters"
|
dataValidationFormulaStrLenErr = "data validation must be 0-255 characters"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// DataValidationErrorStyle defined the style of data validation error alert.
|
||||||
type DataValidationErrorStyle int
|
type DataValidationErrorStyle int
|
||||||
|
|
||||||
// Data validation error styles
|
// Data validation error styles.
|
||||||
const (
|
const (
|
||||||
_ DataValidationErrorStyle = iota
|
_ DataValidationErrorStyle = iota
|
||||||
DataValidationErrorStyleStop
|
DataValidationErrorStyleStop
|
||||||
|
@ -38,17 +40,17 @@ const (
|
||||||
DataValidationErrorStyleInformation
|
DataValidationErrorStyleInformation
|
||||||
)
|
)
|
||||||
|
|
||||||
// Data validation error styles
|
// Data validation error styles.
|
||||||
const (
|
const (
|
||||||
styleStop = "stop"
|
styleStop = "stop"
|
||||||
styleWarning = "warning"
|
styleWarning = "warning"
|
||||||
styleInformation = "information"
|
styleInformation = "information"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DataValidationOperator operator enum
|
// DataValidationOperator operator enum.
|
||||||
type DataValidationOperator int
|
type DataValidationOperator int
|
||||||
|
|
||||||
// Data validation operators
|
// Data validation operators.
|
||||||
const (
|
const (
|
||||||
_DataValidationOperator = iota
|
_DataValidationOperator = iota
|
||||||
DataValidationOperatorBetween
|
DataValidationOperatorBetween
|
||||||
|
@ -61,16 +63,16 @@ const (
|
||||||
DataValidationOperatorNotEqual
|
DataValidationOperatorNotEqual
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewDataValidation return data validation struct
|
// NewDataValidation return data validation struct.
|
||||||
func NewDataValidation(allowBlank bool) *DataValidation {
|
func NewDataValidation(allowBlank bool) *DataValidation {
|
||||||
return &DataValidation{
|
return &DataValidation{
|
||||||
AllowBlank: convBoolToStr(allowBlank),
|
AllowBlank: allowBlank,
|
||||||
ShowErrorMessage: convBoolToStr(false),
|
ShowErrorMessage: false,
|
||||||
ShowInputMessage: convBoolToStr(false),
|
ShowInputMessage: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetError set error notice
|
// SetError set error notice.
|
||||||
func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg string) {
|
func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg string) {
|
||||||
dd.Error = &msg
|
dd.Error = &msg
|
||||||
dd.ErrorTitle = &title
|
dd.ErrorTitle = &title
|
||||||
|
@ -84,45 +86,31 @@ func (dd *DataValidation) SetError(style DataValidationErrorStyle, title, msg st
|
||||||
strStyle = styleInformation
|
strStyle = styleInformation
|
||||||
|
|
||||||
}
|
}
|
||||||
dd.ShowErrorMessage = convBoolToStr(true)
|
dd.ShowErrorMessage = true
|
||||||
dd.ErrorStyle = &strStyle
|
dd.ErrorStyle = &strStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetInput set prompt notice
|
// SetInput set prompt notice.
|
||||||
func (dd *DataValidation) SetInput(title, msg string) {
|
func (dd *DataValidation) SetInput(title, msg string) {
|
||||||
dd.ShowInputMessage = convBoolToStr(true)
|
dd.ShowInputMessage = true
|
||||||
dd.PromptTitle = &title
|
dd.PromptTitle = &title
|
||||||
dd.Prompt = &msg
|
dd.Prompt = &msg
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetDropList data validation list
|
// SetDropList data validation list.
|
||||||
func (dd *DataValidation) SetDropList(keys []string) error {
|
func (dd *DataValidation) SetDropList(keys []string) error {
|
||||||
dd.Formula1 = "\"" + strings.Join(keys, ",") + "\""
|
dd.Formula1 = "\"" + strings.Join(keys, ",") + "\""
|
||||||
dd.Type = convDataValidationType(typeList)
|
dd.Type = convDataValidationType(typeList)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetDropList data validation range
|
// SetRange provides function to set data validation range in drop list.
|
||||||
func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValidationOperator) error {
|
func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValidationOperator) error {
|
||||||
formula1 := fmt.Sprintf("%d", f1)
|
formula1 := fmt.Sprintf("%d", f1)
|
||||||
formula2 := fmt.Sprintf("%d", f2)
|
formula2 := fmt.Sprintf("%d", f2)
|
||||||
if dataValidationFormulaStrLen < len(dd.Formula1) || dataValidationFormulaStrLen < len(dd.Formula2) {
|
if dataValidationFormulaStrLen < len(dd.Formula1) || dataValidationFormulaStrLen < len(dd.Formula2) {
|
||||||
return fmt.Errorf(dataValidationFormulaStrLenErr)
|
return fmt.Errorf(dataValidationFormulaStrLenErr)
|
||||||
}
|
}
|
||||||
/*switch o {
|
|
||||||
case DataValidationOperatorBetween:
|
|
||||||
if f1 > f2 {
|
|
||||||
tmp := formula1
|
|
||||||
formula1 = formula2
|
|
||||||
formula2 = tmp
|
|
||||||
}
|
|
||||||
case DataValidationOperatorNotBetween:
|
|
||||||
if f1 > f2 {
|
|
||||||
tmp := formula1
|
|
||||||
formula1 = formula2
|
|
||||||
formula2 = tmp
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
dd.Formula1 = formula1
|
dd.Formula1 = formula1
|
||||||
dd.Formula2 = formula2
|
dd.Formula2 = formula2
|
||||||
|
@ -131,7 +119,7 @@ func (dd *DataValidation) SetRange(f1, f2 int, t DataValidationType, o DataValid
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetDropList data validation range
|
// SetSqref provides function to set data validation range in drop list.
|
||||||
func (dd *DataValidation) SetSqref(sqref string) {
|
func (dd *DataValidation) SetSqref(sqref string) {
|
||||||
if dd.Sqref == "" {
|
if dd.Sqref == "" {
|
||||||
dd.Sqref = sqref
|
dd.Sqref = sqref
|
||||||
|
@ -140,15 +128,7 @@ func (dd *DataValidation) SetSqref(sqref string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// convBoolToStr convert boolean to string , false to 0, true to 1
|
// convDataValidationType get excel data validation type.
|
||||||
func convBoolToStr(bl bool) string {
|
|
||||||
if bl {
|
|
||||||
return "1"
|
|
||||||
}
|
|
||||||
return "0"
|
|
||||||
}
|
|
||||||
|
|
||||||
// convDataValidationType get excel data validation type
|
|
||||||
func convDataValidationType(t DataValidationType) string {
|
func convDataValidationType(t DataValidationType) string {
|
||||||
typeMap := map[DataValidationType]string{
|
typeMap := map[DataValidationType]string{
|
||||||
typeNone: "none",
|
typeNone: "none",
|
||||||
|
@ -165,7 +145,7 @@ func convDataValidationType(t DataValidationType) string {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// convDataValidationOperatior get excel data validation operator
|
// convDataValidationOperatior get excel data validation operator.
|
||||||
func convDataValidationOperatior(o DataValidationOperator) string {
|
func convDataValidationOperatior(o DataValidationOperator) string {
|
||||||
typeMap := map[DataValidationOperator]string{
|
typeMap := map[DataValidationOperator]string{
|
||||||
DataValidationOperatorBetween: "between",
|
DataValidationOperatorBetween: "between",
|
||||||
|
@ -182,6 +162,37 @@ func convDataValidationOperatior(o DataValidationOperator) string {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddDataValidation provides set data validation on a range of the worksheet
|
||||||
|
// by given data validation object and worksheet name. The data validation
|
||||||
|
// object can be created by NewDataValidation function.
|
||||||
|
//
|
||||||
|
// Example 1, set data validation on Sheet1!A1:B2 with validation criteria
|
||||||
|
// settings, show error alert after invalid data is entered whth "Stop" style
|
||||||
|
// and custom title "error body":
|
||||||
|
//
|
||||||
|
// dvRange := excelize.NewDataValidation(true)
|
||||||
|
// dvRange.Sqref = "A1:B2"
|
||||||
|
// dvRange.SetRange(10, 20, excelize.DataValidationTypeWhole, excelize.DataValidationOperatorBetween)
|
||||||
|
// dvRange.SetError(excelize.DataValidationErrorStyleStop, "error title", "error body")
|
||||||
|
// xlsx.AddDataValidation("Sheet1", dvRange)
|
||||||
|
//
|
||||||
|
// Example 2, set data validation on Sheet1!A3:B4 with validation criteria
|
||||||
|
// settings, and show input message when cell is selected:
|
||||||
|
//
|
||||||
|
// dvRange = excelize.NewDataValidation(true)
|
||||||
|
// dvRange.Sqref = "A3:B4"
|
||||||
|
// dvRange.SetRange(10, 20, excelize.DataValidationTypeWhole, excelize.DataValidationOperatorGreaterThan)
|
||||||
|
// dvRange.SetInput("input title", "input body")
|
||||||
|
// xlsx.AddDataValidation("Sheet1", dvRange)
|
||||||
|
//
|
||||||
|
// Example 4, set data validation on Sheet1!A5:B6 with validation criteria
|
||||||
|
// settings, create in-cell dropdown by allow list source:
|
||||||
|
//
|
||||||
|
// dvRange = excelize.NewDataValidation(true)
|
||||||
|
// dvRange.Sqref = "A5:B6"
|
||||||
|
// dvRange.SetDropList([]string{"1", "2", "3"})
|
||||||
|
// xlsx.AddDataValidation("Sheet1", dvRange)
|
||||||
|
//
|
||||||
func (f *File) AddDataValidation(sheet string, dv *DataValidation) {
|
func (f *File) AddDataValidation(sheet string, dv *DataValidation) {
|
||||||
xlsx := f.workSheetReader(sheet)
|
xlsx := f.workSheetReader(sheet)
|
||||||
if nil == xlsx.DataValidations {
|
if nil == xlsx.DataValidations {
|
||||||
|
|
Loading…
Reference in New Issue