1、获取excel表的数据第一列
xlsx, err := excelize.OpenFile("/Users/***/Desktop/kk.xlsx")
if err != nil {
fmt.Println(err)
}
rows := xlsx.GetRows(“Sheet1”)
for _,row :=range rows{
fmt.Println(row[0]);
}
2、go 字符串处理
(1)字符串截取
str := “XBodyContentX”
content := str[1 : len(str)-1]
(2)字符串分割成数组
str_arr := strings.Split(res, " ")
3、读取csv文件
(1)打开文件
fs, err := os.Open(fileName)
if err != nil {
log.Fatalf(“can not open the file, err is %+v”, err)
}
(2)获取csv对象
r := csv.NewReader(fs)
(3)循环读取文件
oneFlag := true
//读取处理
for {
row, err := r.Read()
if err != nil && err != io.EOF {
log.Fatalf("can not read, err is %+v", err)
}
if err == io.EOF {
break
}
//跳过第一行
if oneFlag {
oneFlag = false
continue;
}
fmt.Println(row)
}
注:
csv会自动将读取的文件进行分割成字符串数组。
当
Read
方法返回错误时,不代表没有读取到任何数据,可能是数据被读完了
时返回的io.EOF
。
从 r 中读取数据,直到 EOF 或发生错误。其返回值 n 为读取的字节数。除 io.EOF 之外
,在读取过程中遇到的任何错误也将被返回。
https://www.jianshu.com/p/dad73b68e7eb
4、写入csv文件
newFileName := "D:\\gotest\\src\\source\\newfile.csv"
//这样打开,每次都会清空文件内容
//nfs, err := os.Create(newFileName)
//这样可以追加写
nfs, err := os.OpenFile(newFileName, os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
log.Fatalf("can not create file, err is %+v", err)
}
defer nfs.Close()
nfs.Seek(0, io.SeekEnd)
w := csv.NewWriter(nfs)
err = w.Write(data)
if err != nil {
log.Fatalf("can not write, err is %+v", err)
}
//这里必须刷新,才能将数据写入文件。
w.Flush()
//一次写入多行
var newContent [][]string
newContent = append(newContent, []string{"1", "2", "3", "4", "5", "6"})
newContent = append(newContent, []string{"11", "12", "13", "14", "15", "16"})
newContent = append(newContent, []string{"21", "22", "23", "24", "25", "26"})
w.WriteAll(newContent)
https://blog.csdn.net/weixin_34258078/article/details/92837677
https://www.cnblogs.com/zhangym/p/6142738.html
file, err := os.OpenFile("111.csv", os.O_CREATE|os.O_RDWR, 0644)
if err != nil {
fmt.Println("open file is failed, err: ", err)
}
defer file.Close()
// 写入UTF-8 BOM,防止中文乱码
file.WriteString("\xEF\xBB\xBF")
w := csv.NewWriter(file)
w.Write([]string{"开发者名称", "开发者邮箱", "应用名称"})
// 写文件需要flush,不然缓存满了,后面的就写不进去了,只会写一部分
w.Flush()
https://www.cnblogs.com/chaselogs/p/9454953.html
5、http下载文件
package main
import (
"io"
"net/http"
"os"
)
var (
url = "http://127.0.0.1:1789/src/qq.exe"
)
func main() {
res, err := http.Get(url)
if err != nil {
panic(err)
}
f, err := os.Create("qq.exe")
if err != nil {
panic(err)
}
io.Copy(f, res.Body)
}