刷存在感,Excel转Protobuf/Json通用配置文件

news2024/11/13 14:34:54

使用场景

最近工作流中有将Excel转Protobuf作为配置文件的技术方案。具体实现是先定一个proto文件,再在一个对应excel表中定义对应字段,由策划在excel进行更改。proto文件可以生成对应语言的脚本,然后将excel转成对应protobuf的binary。

我的想法就是优化掉自定义proto文件的步骤,根据约束在excel中定义数据类型,在导出数据前,自动导出对应的proto文件,以及生成对应的脚本文件。

Excel定义约束

Excel已定义的关键词,以下的所有的配置都可以放在任何sheet里面

关键词描述
#message同protobuf message
#enum同protobuf enum
#package同protobuf package
#config标识当前message导出为config
#desc描述/注释
#type数据类型, 基本同Protobuf类型,有自定义
#var变量名称
#value枚举的变量

message

基本的Message结构如下,RarityType参考下方的枚举定义,支持map和list,list同protobuf repeated

#messageCard
#typeint32stringboolRarityTypemap#string:string#sep=,list#string#sep=,
#varidnamehideraitysoundsanimations
#desc唯一标识名称隐藏罕见程度音效动画
10001名称01false2apply:aa.ogg,walk:bb.oggrun,attack,idle
10002名称02false1apply:aa.ogg,walk:bb.oggrun,attack,idle

enmu

枚举的变量赋值必须从0开始,受限于protobuf的限制

#enmuRarityType
#desc罕见程度
#var#desc#value
Basic基础0
Common普通1
Rare稀有2
Epic史诗3
Legendary传说4
Fixed固定5

config

#config是加在#message上方的表示,后面表格的内容为当前的配置名称

#configcollect
#messageCollect
#typelist#Card
#varCardList
#desc列表

type

基本类型同protobuf的基本类型,比如int32、string等,list、map参考上方的message示例。如果是引用其他的类型结构,直接添加对应的类型名称即可, 具体的数据读取对应类型定义下方填写的数据,参考上方的config示例。

工具实现

都需要安装.net6或者以上的环境,工具在windows下可以直接调用Excel2Config执行,linux/mac环境,可以调用dotnet Excel2Config.dll --help

Excel2Config–help
–helpShow this text.
–versionShow version info. 0.1.0.
–excel_path=The path to the excel file or folder.
–recursive,-RTraverse all the subfolders of the excel folder.
–output_path=Setting the output directory. If it is not set, it is the folder path of excel.
–to_jsonConvert to a json configuration file.
–to_protobuf=Convert to a protobuf configuration file. Input parameter proto
–protoc=Set the path to the protoc execution file.Environment variables are used by default protoc.
–shell=Set the path to the shell execution file.Environment variables are used by default sh.
–protoc_cmd=By default, the output file path of proto is set, and other protoc commands that need to be executed are added.

使用示例

Excel2Config --excel_path=Excel/ --to_json --to_protobuf=all --protoc_cmd="--csharp_out=Excel/" --shell="C:\\Program Files\\Git\\bin\\bash.exe" --protoc="D:\\protoc.exe"

Excel配置

请添加图片描述请添加图片描述请添加图片描述

导出文件

请添加图片描述请添加图片描述

夹带私货

  • 虽然支持json导出,但是还是推荐导出protobuf作为配置使用,json只是作为可视化参考
  • 有json可以利用其他工具转成,yaml等配置文件
  • 这里利用shell环境去调用protoc的命令,即使在windows下也需要设置shell环境,开发都安装了git-bash环境,所以这里的shell环境也不是啥大问题。windows下的路径确实有点恶心。

ToDo

  • 需要支持配置大文件的分割,并使用同一个结构脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1424282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Tomcat与网络9】提高Tomcat启动速度的八大措施

本文我们来看一下如何对Tomcat进行调优,我们对于Tomcat的调优主要集中在三个方面:提高启动速度、提高系统稳定性和提高并发能力,后两者很多时候是相辅相成的,我们放在一起看。 Tomcat现在一般都嵌入在SpringBoot里,因…

又涨又跌 近期现货黄金价格波动怎么看?

踏入2024年一月的下旬,现货黄金价格可以说没了之前火热的状态,盘面上是又涨又跌。面对这样的行情,很多投资者不知道如何看了。下面我们就来讨论一下怎么把握近期的行情。 先区分走势类型。在现货黄金市场中有两种主要的走势类型,一…

千兆电口模块和万兆电口模块:网络速度的演变

随着信息技术的迅猛发展,网络通信技术也在不断进步。在过去的几十年中,以太网的速度发生了巨大的变化,从最初的百兆以太网,到如今的千兆以太网和万兆以太网甚至40G、100G以太网满足了大数据、云计算、人工智能等新兴应用的需求。在…

Golang语言异常机制解析:错误策略与优雅处理

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 作为开发者来说,我们没办法保证程序在运行过程中永远不会出现异常,对于异常…

前端JavaScript篇之实现一个将多维数组展示的方法有哪些,分别是?

目录 实现一个将多维数组展示的方法有哪些,分别是?方法一:递归展开成一维数组方法二:嵌套展示结构方法三:ES6新增的数组扩展方法 flat()方法四:apply() 结合 concat() 使用以展开成一维数组方法五&#xff…

2024 年 Sketch 替代品的最佳选择:Windows、Web 和 Mac 用户的详细比较

什么是Sketch Sketch是一个著名的、越来越受欢迎的矢量图形设计软件,它通过各种有用的UI设计和原型设计工具使这一过程更易于管理。 Sketch于2010年9月首次发布,后来在2012年获得苹果设计奖。对于Sketch来说,这正好停止了Adobe使用当时领先…

JAVA Web 学习(二)ServLet

二、动态web 资源开发技术——Servlet Servlet(小服务程序)是一个与协议无关的、跨平台的Web组件,由Servlet容器所管理。运行在服务器端,可以动态地扩展服务器的功能,并采用“请求一响应”模式提供Web服务。 Servlet的…

基于仿射区间的分布式三相不对称配电网潮流算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于仿射区间的分布式三相不对称配电网潮流算法matlab仿真。 基于仿射区间的,含分布式电源的配电网三相潮流算法,算法涉及仿射,三相&#x…

python爬虫概念及介绍

1. 什么是互联网爬虫? 解释 1 :通过一个程序,根据 Url ( http : // www . taobao . com ) 进行爬取网页,获取有用信息 解释 2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息 2. 爬虫核…

深度学习经典模型之BERT(下)

在"深度学习经典模型之BERT(上)"我们描述了BERT基本信息、意义、与GPT和Transformer的区别、预训练、自监督等相关信息后,本章节将介绍BERT的输入、Encoder、微调及两个主流变种。 BERT inputs 切词方法 BERT的切词方法用的是WordPiece embeddings&…

MongoDB数据模型和WiredTiger读写模型

MongoDB数据模型 思考:MongoDB为什么会使用BSON? BSON协议与数据类型 JSON JSON是当今非常通用的一种跨语言Web数据交互格式,属于ECMAScript标准规范的一个子集。JSON(JavaScript Object Notation, JS对象简谱)即J…

[word] word艺术字体如何设置? #知识分享#职场发展#媒体

word艺术字体如何设置? 在工作中有些技巧,可以快速提高工作效率,解决大部分工作,今天给大家分享word艺术字体如何设置的技巧,希望可以帮助到你。 1、设置艺术字 选中文字,然后点击菜单栏的【插入】按钮一一…

机器学习复习(6)——numpy的数学操作

加减法运算 # 创建两个不同的数组 a np.arange(4) #list(0,1,2,3 b np.array([5,10,15,20]) # 两个数组做减法运算 b-a 运行结果: 计算数组的平方 #b*2代表数组b每个元素乘以2 #b**2代表数组b每个元素的2次方 b**2 运行结果: 计算数组的正弦值 #…

8.DNS域名解析服务器

目录 1. 概述 1.1. 产生原因 1.2. 作用: 1.3. 连接方式 1.4. 因特网的域名结构 1.4.1. 拓扑: 1.4.2. 分类 1.4.3. 域名服务器类型划分 2. DNS域名解析过程 2.1. 分类: 2.2. 解析图: 2.2.1. 图: 2.2.2. 过…

【学网络安全】kali linux入门及常用简单工具介绍(附工具包)

前言 相信很多同学了解到和学习网络安全的时候都听过kali系统,大家都称之为黑客最喜爱的系统,那么什么是kali,初学者用kali能做些什么,我将在本文中做简单的介绍 一、kali linux是什么? Kali Linux 是专门用于渗透测…

数据结构_单链表题-2.1

一. 反转单链表 将一个单链表反过来。 个人思路(一团浆糊大错特错) 反转嘛,变最后为起点,依次反转过来就行了。 1)找到最后三个链表结点,分别保存下来,以最后一个为首地址。 2)最…

整数对最小和 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 给定两个整数数组array1、array2,数组元素按升序排列。 假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素&am…

Qt扩展-muParser数学公式解析

muParser数学公式解析 一、概述1. 针对速度进行了优化2. 支持的运算符3. 支持的函数4. 用户定义的常量5. 用户定义的变量6. 自定义值识别回调7. 其他功能 二、内置函数三、内置二元运算符四、三元运算符五、内置常量六、源码引入1. 源码文件2. 编译器开关1. MUP_BASETYPE2.MUP_…

配置支持 OpenAPI 的 ASP.NET Core 应用

写在前面 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 本文记录如何配置基于Swagger 的 ASP.NET Core 应用程序的 OpenAPI 规范。 需要从NuGet 安装 Swashbuckle.AspNetCore 包 代码实现 var builder WebApplicati…

如何在 Golang 中使用 crypto/ed25519 进行数字签名和验证

如何在 Golang 中使用 crypto/ed25519 进行数字签名和验证 引言crypto/ed25519 算法简介环境搭建和准备工作生成密钥对进行数字签名 验证签名实际应用场景案例总结 引言 在当今数字化时代,网络安全显得尤为重要。无论是在网上进行交易、签署合同,还是发…