例子:读取excel内容下载图片
2020-04-11 本文已影响0人
yezide
package main
import (
"fmt"
"io"
"net/http"
"os"
"github.com/Luxurioust/excelize"
)
func main() {
// 打开excel
xlsx, err := excelize.OpenFile("/Users/lijingle/Downloads/1.xlsx")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
rows, err := xlsx.GetRows("工作表1")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// 开始处理
for _, row := range rows {
fid := row[0]
tid := row[1]
url := row[2]
if len(fid) > 0 && len(tid) > 0 && len(url) > 0 {
downPicture(fid, tid, url)
} else {
fmt.Printf("处理失败,存在异常数据,fid=[%s],tid=[%s], url=[%s], error=%s\n", fid, tid, url)
}
}
}
/**
* 下载图片,按fid分文件夹,按tid保存文件
*/
func downPicture(fid string, tid string, url string) {
basepath := "/Users/lijingle/Downloads/pic/down/" + fid + "/"
fname := basepath + tid + ".jpg"
// 如果以fid文件夹不存在,则创建
_, err := os.Stat(basepath)
if os.IsNotExist(err) {
os.Mkdir(basepath, os.ModePerm)
}
// 如果图片文件已存在则不创建
_, err1 := os.Stat(fname)
if !os.IsNotExist(err1) {
//fmt.Printf(" 文件已存在,不重复下载, fname=%s\n", fname)
}
// 真正开始下载
res, err := http.Get(url)
if err != nil {
fmt.Printf("下载失败,fid=[%s],tid=[%s], url=[%s], error=%s\n", fid, tid, url, err)
return
}
f, err := os.Create(basepath + tid + ".jpg")
if err != nil {
fmt.Printf("保存失败,fid=[%s],tid=[%s], url=[%s], error=%s\n", fid, tid, url, err)
return
}
io.Copy(f, res.Body)
fmt.Printf("保存成功,fid=[%s],tid=[%s], url=[%s]\n", fid, tid, url)
}