1.GO读写EXCEL
1.1 配置包
go get "github.com/360EntSecGroup-Skylar/excelize"
1.2 读取文件
将xlsx文件中属性对应的值转为map的数组。
func readExcel() {
file := "./file/file.xlsx"
f, err := excelize.OpenFile(file)
if err != nil {
fmt.Println(err)
return
}
rows := f.GetRows("result")
res := make([]map[string]string, 0)
for i := 1; i < 26; i++ {
d := make(map[string]string)
for j := 0; j < len(rows[i]); j++ {
d[rows[0][j]] = rows[i][j]
}
res = append(res, d)
}
r := make(map[string]interface{}, 0)
data := res[0]["raw"]
json.Unmarshal([]byte(data), &r)
fmt.Println(res)
fmt.Println(reflect.TypeOf(r["cvt_ts"]))
}
1.3 写入xlsx文件
1.数据:map数组
2.方法:先获取所有的键,并写入第一行,数据:依次根据键写入后面的列。
// 写入excel, data为数据, attrs为表头, file为文件名
func writeExcel(data []map[string]string, file string) {
f := excelize.NewFile()
index := f.NewSheet("Sheet1")
f.SetActiveSheet(index)
f.SetCellValue("Sheet1", "A1", "ID")
attrs := make([]string, 0)
for k, _ := range data[0] {
attrs = append(attrs, k)
}
for i, v := range attrs {
//设置表头, A1, B1, C1...
columnLabel := string(rune('A' + i))
f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", columnLabel, 1), v)
}
for i, v := range data {
for i1, k := range attrs {
columnLabel := string(rune('A' + i1))
f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", columnLabel, i+2), v[k])
}
}
if err := f.SaveAs(file); err != nil {
fmt.Println(err)
}
}
2.go常用方法
2.1 字符串
// 字符串
str := "hello World"
//获取长度
var l int
l = len(str)
//字符串分割
strs := strings.Split(str, " ") //strs是[]string
//strings.ToLower:转为小写
l_str =strings.ToLower(str)
//strings.Contain, string包含
//strings.HasPrefix(s, prefix string) bool 和 strings.HasSuffix(s, suffix string) bool,分别检查字符串s是否以prefix为前缀或以suffix为后缀。
2.2 正则表达式
str := "abc 12a bc45 4ccf"
regexp := regexp.MustCompile(`\d+`)
res := regexp.FindString(str) //查找第一个匹配
resAll := regexp.FindAllString(str, -1) //查找所有匹配
new_str := regexp.ReplaceAllString(str, "98") //替换成98
fmt.Println(res,resAll,new_str)