vlambda博客
学习文章列表

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

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

前言

本篇开始介绍导表工具OneExcel(https://github.com/onelei/oneexcel)的使用。OneExcel是使用Go语言开发,导出文件为lua配置表文件。

Excel库

Go语言的Excel处理库还是挺多的,目前对比了两个常用的Excel处理库

github.com/360EntSecGroup-Skylar/excelize
github.com/tealeg/xlsx

经过测试发现xlsx库读取excel里面的内容优于excelize。(后面如果发现还有其他的速度快的excel库可以替换,这里使用xlsx库来解析excel文件)

规则定义

针对Excel导出lua文件制定了如下规则

  1. Excel的Sheet名字前面带有#字符的忽略导出 (图中的”#ReadMe“ Sheet忽略导出)

  1. Excel的第一行是字段的描述说明,第二行是字段类型,第三方是字段名字。从第四行开始四字段的内容。

  2. 支持的数据类型:int、float、bool、string、Vector2、Vector3、Vector4

  3. 支持的类型数组:bool[]、int[]、float[]、string[]、Vector2[]、Vector3[]、Vector4[]

  4. Excel的第一行的字段描述的开头如果以#开头,那么该列就不会作为有效数据导出,便于策划在数据后面添加注释说明。

  5. 双Key:如果想要导出的数据支持双Key,只需要在Excel的第一行的字段前面以*开头即可,两个Key都要加上标注。

如上图” *test int “  和  ” *test int “

扩展

config.go

在config.go文件里面定义了Excel的源目录

const EXCEL_DIR = "./Excels/"
const HEAD_SHEET_INGORE = "#"
const HEAD_CELL_KEY = "*"

以及excel的数据结构

type SheetData struct {
SheetName string
HeadLength int

DescList   []string
KeyTypeList []string
KeyNameList []string

HasTwoKey bool
//Two key
KeyValueList [][]string
}

每一个Sheet都有上面的结构, 有需要可以自己修改里面的内容。

xlsx.go

xlsx.go文件里面包含了对excel文件的读取,会返回结构为SheetData的数组

luaUtil.go

luaUtil.go文件里面是编写导出的lua文件(包含大括号、头部包含Key的table等等)

cellType.go

cellType.go文件里面是针对各种数据类型对应的导出格式的封装。

main.go

main.go文件的main函数里面就是根据Excel目录一键导出所有的lua配置文件。

下载地址

https://github.com/onelei/oneexcel    欢迎Start~~~