Ai
1 Star 0 Fork 0

Alvin Rex/excel

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
type.go 2.80 KB
一键复制 编辑 原始数据 按行查看 历史
cuishu 提交于 2023-07-17 23:03 +08:00 . 增加 time 类型支持
package excel
import (
"fmt"
"reflect"
"strconv"
"github.com/go-playground/validator/v10"
)
func getReflectValue(s string, t reflect.Type) (reflect.Value, error) {
var rv reflect.Value
switch t.Kind() {
case reflect.String:
rv = reflect.ValueOf(s)
case reflect.Int8:
v, err := strconv.ParseInt(s, 10, 8)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(int8(v))
case reflect.Int16:
v, err := strconv.ParseInt(s, 10, 16)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(int16(v))
case reflect.Int32:
v, err := strconv.ParseInt(s, 10, 32)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(int32(v))
case reflect.Int64:
v, err := strconv.ParseInt(s, 10, 64)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(int64(v))
case reflect.Int:
v, err := strconv.ParseInt(s, 10, 64)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(int(v))
case reflect.Uint8:
v, err := strconv.ParseUint(s, 10, 8)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(uint8(v))
case reflect.Uint16:
v, err := strconv.ParseUint(s, 10, 16)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(uint16(v))
case reflect.Uint32:
v, err := strconv.ParseUint(s, 10, 32)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(uint32(v))
case reflect.Uint64:
v, err := strconv.ParseUint(s, 10, 64)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(uint64(v))
case reflect.Uint:
v, err := strconv.ParseUint(s, 10, 64)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(uint(v))
case reflect.Float32:
v, err := strconv.ParseFloat(s, 32)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(float32(v))
case reflect.Float64:
v, err := strconv.ParseFloat(s, 64)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(float64(v))
case reflect.Bool:
v, err := strconv.ParseBool(s)
if err != nil {
return rv, err
}
rv = reflect.ValueOf(v)
}
return rv, nil
}
func toString(v interface{}) string {
if bv, ok := v.([]byte); ok {
return string(bv)
}
return fmt.Sprintf("%v", v)
}
func isTime(rt reflect.Type) bool {
if rt.PkgPath() == "time" && rt.Name() == "Time" {
return true
}
return false
}
var validate = validator.New()
var twentySixTable = []string{"", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
func toTwentySix(n int) string {
var str string
var k int
var temp []int
if n > 26 {
for {
k = n % 26
if k == 0 {
temp = append(temp, 26)
k = 26
} else {
temp = append(temp, k)
}
n = (n - k) / 26
if n <= 26 {
temp = append(temp, n)
break
}
}
} else {
return twentySixTable[n]
}
for _, v := range temp {
str = twentySixTable[v] + str
}
return str
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/rexvonai/excel.git
git@gitee.com:rexvonai/excel.git
rexvonai
excel
excel
825567353a5e

搜索帮助