用CBrother将excel中的数据转换为C语言头文件

时间:2022-08-28 13:01:17

用CBrother将excel中的数据转换为C语言头文件

  最近在工作中,产品这边总是要调整一些参数,而我们在这一块要求所有的配置必须用宏定义来做,因为不同型号直接硬编码写死在代码里,但是一但数量大了,而且还经常是浮点数,一天改上个十次八次的,直接头就大了,跟CBrother作者沟通后,他在1.0.8里面增加了excel的读取,我直接可以把产品给的excel内容生成一个C语言头文件,这样一来你一天就算改100次我也没感觉。

    先来看看我们的excel:

    用CBrother将excel中的数据转换为C语言头文件

  我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文件

用CBrother将excel中的数据转换为C语言头文件

  打开看一下

用CBrother将excel中的数据转换为C语言头文件

  so easy!!!,后面产品狗再怎么修改我也不怕了。