Add function doc and fix golint error

This commit is contained in:
xuri 2018-09-01 23:32:44 +08:00 committed by GitHub
parent 24a8d64f93
commit 562ba3d234
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 53 additions and 42 deletions

View File

@ -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 {