【开源项目】Excel数据表自动生成工具v1.0版

一、介绍

Excel数据表自动生成工具是Go语言编写的一款小型工具软件,用于将特定的Excel表格内容导出为多种编程语言的代码或可以直接读取的数据内容。

开源Github地址:https://github.com/SkyCreator/goproj

二、版本v1.0功能概览

1.编程语言支持

目前只支持Go语言和Lua语言。

2.表格内容支持

目前只支持一个Excel文件对应一张数据表(不支持同一个Excel文件多个标签分表)

三、目录结构

{.alignnone}

如上图所示,目录结构分为DataTable文件夹、internal文件夹、Out文件夹和DataTableGen.exe可执行程序。

1.DataTable文件夹

原始Excel表格放入这里。

2.Internal文件夹

生成模板文件,不需要关心。

3.Out文件夹

生成相应编程语言文件。

4.DataTableGen.exe可执行程序

直接运行即可生成lua数据表。

四、Excel表格式说明

{.alignnone}

如图所示,DataTable文件夹中包含原始Excel文件。此文档以User.xlsx和UserCommodity.xlsx为测试用例进行说明。

1.原始Excel文件

原始Excel文件的名称代表数据表的名称,以大驼峰命名法(CamelCase)命名。大驼峰命名法要求英文词汇以首字母大写,后面字母小写的方式命名。如UserCommodity、CommonItem等。

2.表结构

{.alignnone}

如上图所示,这是User.xlsx的表结构。为了适应多种编程语言,表结构必须严格按照固定格式制作。

表结构分为橙色矩形区域和蓝色矩形区域

橙色矩形区域

橙色矩形区域代表表头信息,分为三行。
第1行 :数据类型行。

目前支持INT (整数)、STRING (字符串)、BOOL (布尔值)和FLOAT (浮点数)。
INT ,填写整数,也就是不包含小数点的数字。
STRING ,填写字符串,任何语言的字符串都可以。
BOOL ,填写布尔值,填写0、1、true和false(大小写不敏感)都可以。
FLOAT,填写浮点数,可以填写具有小数点的实数。不建议使用。因为精度问题,一般浮点数都用10的整数倍(作为基数)来表示,程序中再根据数据除以基数得出结果。

第2行 :备注行。

解释当前列的作用。程序不读取。

第3行 :数据名称行。

生成的代码中具有明确标识的名称,同样使用大驼峰命名法。

蓝色矩形区域

策划备注列,作为每一行的特殊标注。程序不读取。

五、生成代码

Lua

{.alignnone}

双击DataTableGen.exe,Out/Lua下会生成对应的lua数据表脚本文件。User.xlsx表对应User.lua文件,UserCommodity.xlsx表对应UserCommodity.lua文件。

Go

{.alignnone}

Cmd命令行或Shell终端中执行./DataTableGen.exe go,Out/Go下会生成对应的go数据表相关代码文件。User.xlsx表对应User.go文件,UserCommodity.xlsx表对应UserCommodity.go文件,DataTableFactory.go是工厂代码文件,不需要关心。

六、使用数据表

Lua

{.alignnone}

如上图所示,假如需要读取User.xlsx表格的内容,只需要使用前缀DR+表名User,引用以表格User.xlsx中Id列作为key,即可获得这一行数据。在这张表下,可以通过user.Id,user.Name,user.Height,user.Sex,user.Age取得相应的行数据。

Go

由于语言特性不同,Go的使用也不同于Lua。
{.alignnone}

上图所示,在你的项目中,需要导入GoData包。
{.alignnone}

GoData包中除了工具生成的几个Go代码文件外,还包含DataTableManager.go(github地址)

具体用法如下:
{.alignnone}

1.初始化数据表管理器

dtManager := GoData.MustInit()

2. 获取表格结构体指针

dt := dtManager.GetDTUserCommodityTable()

3. Get()方法

根据表Id获取表数据

ucData := dt.Get(91)

根据表数据取得特定数据

ucData.Name

4. GetAll()方法

用于遍历数据表,返回行数据数组

ucDataAll := dt.GetAll()

5. Rows()方法

用于统计数据表行数

dt.Rows()

七、未来规划

1.支持同一张Excel表中的不同标签页。计划将多于一个标签页的Excel表作为一个独立的文件夹,每个标签页名对应数据表名。
2. 支持某几列为同一组的类型。
3. 更多语言支持。
相关推荐
梦想很大很大10 小时前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
lekami_兰15 小时前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
却尘18 小时前
一篇小白也能看懂的 Go 字符串拼接 & Builder & cap 全家桶
后端·go
ん贤19 小时前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁
mtngt111 天前
AI DDD重构实践
go
AI_56783 天前
Postman接口测试提速技巧:批量请求+智能断言实践
测试工具·lua·postman
Grassto3 天前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
Grassto5 天前
11 Go Module 缓存机制详解
开发语言·缓存·golang·go·go module
程序设计实验室6 天前
2025年的最后一天,分享我使用go语言开发的电子书转换工具网站
go
我的golang之路果然有问题6 天前
使用 Hugo + GitHub Pages + PaperMod 主题 + Obsidian 搭建开发博客
golang·go·github·博客·个人开发·个人博客·hugo