Go语言开发Excel导表工具(上)

て烟熏妆下的殇ゞ 提交于 2021-01-19 07:55:24

Go语言开发Excel导表工具(上)

前言

游戏开发中经常会遇到将Excel文件导出配置的需求,鉴于之前的导表工具面对数据比较多的表格(尤其是多语言表格)导致导表速度很慢,因此想自己实现一个导表工具。

调研

目前市面上编程语言比较多:Node、Python、C#、Go...  以前项目中有用C#的也有用Python的,对比发现Python导表还是挺快的。(后来发现其实使用不同的Excel读取插件,执行效率还各有不同)在前期调研中发现了网站https://zhuanlan.zhihu.com/p/29847628 , 里面说是Go语言执行效率高,那就拿他试试吧。

Go语言

其实对于新语言,一开始就要了解它的语法,这里推荐一个网站  https://www.runoob.com/go/go-tutorial.html里面都是一些简单的基础语法。

环境配置

目前选用JetBrains公司的GoLand编程工具

下载Go

https://golang.google.cn/dl/

下载GoLand

https://www.jetbrains.com/go/

安装好之后这里需要设置一下GOPATH, 如图的目录就是用来下载后面Go语言相关的package包。

开发

Go语言需要一个main函数,同一个文件夹下面的文件的package包名必须要一致,不然IDE会报错。具体的导表逻辑下篇会介绍。

导出可执行文件

配置好main.go的路径之后 Ctrl+F5 运行即可,生成的可执行文件会在上图里面的bin文件夹里面(配置的Output directory)。

以上就可以使用该可执行文件了,下面是完善文件图标和文件版权等说明。不需要的可以直接忽略。。。

文件图标

生成exe文件之后,我们需要给他设置一个文件图标、文件说明、版本等信息需要使用到windres命令。

安装MinGW https://sourceforge.net/projects/mingw/

选择对应的package,等待下载完成即可。

系统的环境变量配置好 “MinGW/bin”目录即可使用windres命令行

在Go语言生成的exe文件(比如OneExcel.exe)同一个目录下面放入需要的图标(比如OneExcel.ico)和版权文件(比如OneExcel.rc), OneExcel.rc文件里面内容如下


1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x40004
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
  BLOCK "040904B0"
  {
      VALUE "CompanyName", "ONELEI"
      VALUE "FileDescription", "Excel tool, use Go language."
      VALUE "FileVersion", "1.0.0.0"
      VALUE "InternalName", "OneExcel"
      VALUE "LegalCopyright", "Copyright (C)2019 ONELEI. All rights reserved."
      VALUE "OriginalFilename", "OneExcel.exe"
      VALUE "ProductName", "OneExcel"
      VALUE "ProductVersion", "1.0.0.0"
  }
}




BLOCK "VarFileInfo"
{
  VALUE "Translation", 0X0409, 0X04B0
}
}



IDI_ICON1 ICON "OneExcel.ico"

命令行输入

windres -o OneExcel.syso OneExcel.rc

同级目录会生成 OneExcel.syso 文件。

下面我们将OneExcel.syso文件放入main.go文件的目录下面,命令行输入

go build -o OneExcel.exe

此时就会发现当前目录生成了包含"OneExcel.ico"图标的OneExcel.exe文件了,查看其属性详细信息,也包含了OneExcel.rc里面的文件描写的详细信息。


本文分享自微信公众号 - Unity游戏开发笔记(UnityGameDeveloper)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!