美文网首页
go版本Excel导入脚本

go版本Excel导入脚本

作者: 追风骚年 | 来源:发表于2018-12-16 22:34 被阅读22次

一直挺想用 go 的,但是没想到能干啥,前段时间正好有个任务导入 Excel 到后台数据库,用 Python 的话我可能分分钟就写好了,但是作死的我就想试下 go,因为 go 可以打包成可执行程序包,然后就可以不依赖 go 的环境。

直接编码

使用 flag 获取终端参数解析

path := flag.String("path", "", "excel 路径")
url := flag.String("url", "**", "服务器地址")
flag.Parse()

这里定义了 path 路径和服务器地址 url,唯一需要注意的是,这里变量返回都是指针。flag 有个好处,他的参数都是形如(key,defaultValue,$description),所以在执行 -h 的时候,都会返回 key 以及对应的 description。

使用 Luxurioust/excelize 读取Excel文件

xlsx, err := excelize.OpenFile(*path)
rows := xlsx.GetRows("Sheet1")
for r, row := range rows {
    fmt.Println(r)
    for c, col := range row {
        fmt.Println(c)
        fmt.Println(col)
    }
}

这个包用起来还是很舒服,唯一一点只支持 xlsx 格式,对于老版本的 xls 格式可能需要先转化了才能使用。rows 为一个二维数组,参数为 sheet 名称,默认的名称都是 Sheet1

使用自带的 net/http 发送请求

str, _ := json.Marshal(data)
resp, err := http.Post(url,
    "application/json",
    strings.NewReader(string(str)))
if err != nil {
    fmt.Println(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    fmt.Println(err)
    os.Exit(1)
}
fmt.Println(string(body))

go 自带的的 http 就是这么好用,post 形式发送了一个 json 包,这个 jsonEncode 用起来稍微有点不爽但是也还好。

打包程序

$ go build  main.go

就可以将这个脚本打包成一个可执行文件了,但是发现文件还挺大的,我以为只有几百 k 呢,都 8m 多了

压缩程序

$ brew install upx
$ upx main

upx 是一个专门的压缩打包可执行文件的程序,可以优化包体积。

这里压缩过的包不能使用了,暂时没有深究什么原因。所以寻找其他方式

再次优化

$ go build -ldflags -w main.go

发现这样弄就可以减少 1m 的体积,还是挺可观的,现在有一个可执行文件了,不用对方有 golang 环境,拿过去直接可以运行跑起来。go 就是优秀!

参考

相关文章

  • go版本Excel导入脚本

    一直挺想用 go 的,但是没想到能干啥,前段时间正好有个任务导入 Excel 到后台数据库,用 Python 的话...

  • yii2.0 PHPExcel

    //脚本:将数据导入Excel public function actionTest(){ $cache = ...

  • 导入excel表

    excel 2007 2003版本导入数据库

  • gomod常用

    gomod文件初始化:go mod init找到项目依赖并导入:go mod tidy安装指定版本:go mod ...

  • linux安装go环境

    先执行uname -m查看系统架构 获取go 语言包 解压 导入环境变量 验证,查看go版本

  • Go - 生成Excel文件(.xlsx)

    1、导入xlsx直接生成Excel: go get github.com/tealeg/xlsx 如果在get包时...

  • js文件上传 、导入报表excel

    这里导入分两种 :1.导入excel数据到后台:批量导入2.导入excel数据到网页:单条导入 导入的excel模...

  • Excel数据导入到SQLServer

    一、准备工作,Excel数据表,sql导入数据脚本文件; 二、双击脚本文件,在本地数据库中打开,执行; 三、生成脚...

  • 使用python处理excel

    导入xlrd模块读取excel 导入xlwt模块写入excel

  • combiz导入excel数据

    1、excel导入数据前要确保excel是97-2003格式,如果是用高版本的excel整理的数据可以另存为97-...

网友评论

      本文标题:go版本Excel导入脚本

      本文链接:https://www.haomeiwen.com/subject/iqrfkqtx.html