例子:读取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)
}

上一篇下一篇

猜你喜欢

热点阅读