go版本Excel导入脚本

栏目: Go · 发布时间: 7年前

内容简介:一直挺想用 go 的,但是没想到能干啥,前段时间正好有个任务导入 Excel 到后台数据库,用 Python 的话我可能分分钟就写好了,但是作死的我就想试下 go,因为 go 可以打包成可执行程序包,然后就可以不依赖 go 的环境。这里定义了 path 路径和服务器地址 url,唯一需要注意的是,这里变量返回都是指针。flag 有个好处,他的参数都是形如(这个包用起来还是很舒服,唯一一点只支持

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

直接编码

使用 flag 获取终端参数解析

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

这里定义了 path 路径和服务器地址 url,唯一需要注意的是,这里变量返回都是指针。flag 有个好处,他的参数都是形如( go版本Excel导入脚本 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 就是优秀!

参考


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法交易与套利交易

算法交易与套利交易

赵胜民 / 厦门大学出版社 / 2010-9 / 35.00元

《算法交易与套利交易》主要介绍算法交易和一些套利交易的策略,以便于读者对相关方面的内容进行阅读和学习。在《算法交易与套利交易》的第一部分,我们回顾了投资学一些相关的基本内容。其中,前两章介绍了证券投资的收益和风险等特征,以及马可维茨的最优资产配置模型。第3章则介绍了股票投资分析当中常用的资本资产定价模型(CAPM)、套利定价模型(APT),以及因素模型。然后,第4、5章分别讲到了金融证券估值模型、......一起来看看 《算法交易与套利交易》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具