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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

    先来看看我们的excel:

    用CBrother将excel中的数据转换为C语言头文件 随笔 第1张

  我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语言头文件 随笔 第2张

  打开看一下

用CBrother将excel中的数据转换为C语言头文件 随笔 第3张

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

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄