用CBrother将excel中的数据转换为C语言头文件
用CBrother将excel中的数据转换为C语言头文件
最近在工作中,产品这边总是要调整一些参数,而我们在这一块要求所有的配置必须用宏定义来做,因为不同型号直接硬编码写死在代码里,但是一但数量大了,而且还经常是浮点数,一天改上个十次八次的,直接头就大了,跟CBrother作者沟通后,他在1.0.8里面增加了excel的读取,我直接可以把产品给的excel内容生成一个C语言头文件,这样一来你一天就算改100次我也没感觉。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。先来看看我们的excel:
我r他哥。。。。。,之前我都是一个一个复制进去的,一天改10次我都想砸电脑了。
再来看看我的转化脚本:
import CBExcel.code function main(parm) { var excel = new Excel(); var path = GetRoot() + "config.xlsx"; if(!excel.load(path)) { print path + " load error."; return; } var excelsheet = excel.getWorksheet(0);//第一页就是我要的config var totalRows = excelsheet.getTotalRows(); var totalClos = excelsheet.getTotalCols(); var file = new File(GetRoot() + "CarConfig.h","wb"); file.write("#ifndef CarConfig_H_\r\n#define CarConfig_H_\r\n\r\n"); //第0行表头不用从1开始 for(var i = 1 ; i < totalRows ; i++) { var carNo = excelsheet.getCell(i,0).getString(); if(strlen(carNo) <= 0) { continue; } var audioCnf = excelsheet.getCell(i,1).getDouble(); var lightCnf = excelsheet.getCell(i,2).getDouble(); file.write("#define CAR_AUDIO_CONFIG_" + carNo + " " + audioCnf); file.write("\r\n"); file.write("#define CAR_LIGHT_CONFIG_" + carNo + " " + lightCnf); file.write("\r\n\r\n"); } file.write("#endif"); file.close(); }
运行后在脚本旁边生成了.h文件
打开看一下
so easy!!!,后面产品狗再怎么修改我也不怕了。

更多精彩