C++操作EXCEL,支持读写、设置字体和单元格属性

头文件中函数定义
        //启动EXCEL程序
	 BOOL Init();
	 //关闭EXCEL,释放资源
	 void Close();

	 //从EXCEL读取数据前的加载函数
	 BOOL InitRead(const char* filePath);

	 //保存EXCEL表到 filePath
	 BOOL Save(const char* filePath);

	 static int CharToInt(string scol);

	 //写入一个Cell中一个string型数据
	 BOOL SetCellString(int irow, int icol, string new_string);

	 //写入一个Cell中一个double型数据
	 BOOL SetCellDouble(int irow, int icol, double new_double);


	 //写入一个Cell中一个int型数据
	 BOOL SetCellInt(int irow, int icol, int new_int);


	 //检查一个Cell是否是字符串、double数据、空、int数据     1 字符串\\2 double数据\\3 空\\4 int数据
	 int CheckCellType(int irow, int icol);

	 /* template <typename MyData>
	  MyData GetCellValue(int irow, int icol);*/

	 //目前只考虑获取三种数据类型
	 //获取String类型的Cell
	 string GetCellString(int irow, int icol);

	 //获取Double类型的Cell
	 double GetCellDouble(int irow, int icol);

	 //获取int类型的Cell
	 int GetCellInt(int irow, int icol);

	 //获取行的总数
	 int GetRowCount(const char* filePath);

	 //获取列的总数
	 int GetColumnCount(const char* filePath);

	 //获得单元格的名称,比如 2行3列= C2
	 static string GetCellName(int irow, int icol);

	 //设置单个单元格的颜色
	 void SetCellColor(int irow, int icol, int red, int green, int blue);

	 //设置一定范围单元格的颜色   (brow,bcol)为起始单元格 (erow,ecol)为结束单元格
	 void SetRangeColor(int brow, int bcol, int erow, int ecol, int red, int green, int blue);

	 //设置单个单元格的背景颜色	
	 //icolor<=56  icolor(常用) = 1黑 /2白 /3红 /4绿 /5蓝 /6黄 /7紫 /8青 
	 void SetCellBackground(int irow, int icol, int icolor);

	 //设置一定范围单元格的背景颜色   (brow,bcol)为起始单元格 (erow,ecol)为结束单元格
	 //icolor<=56  icolor(常用) = 1黑 /2白 /3红 /4绿 /5蓝 /6黄 /7紫 /8青 
	 void SetRangeBackground(int brow, int bcol, int erow, int ecol, int icolor);

	 //设置单个单元格的边框为黑色实线
	 void SetCellBorder(int irow, int icol);

	 //设置一定范围单元格的边框	(brow,bcol)为起始单元格 (erow,ecol)为结束单元格
	 void SetRangeBorder(int brow, int bcol, int erow, int ecol);

	 //设置单个单元格的字体风格,比如 "宋体"、"华文行楷"
	 void SetCellFont(int irow, int icol,const char *font);

	 //设置一定范围单元格的字体风格,比如 "宋体"、"华文行楷"
	 //(brow, bcol)为起始单元格(erow, ecol)为结束单元格
	 void SetRangeFont(int brow, int bcol, int erow, int ecol, const char *font);

	 //设置单个单元格的字体大小
	 void SetCellSize(int irow, int icol, int size);

	 //设置一定范围单元格的字体大小		(brow,bcol)为起始单元格 (erow,ecol)为结束单元格
	 void SetRangeSize(int brow, int bcol, int erow, int ecol, int size);

部分代码实现,将字母转换为数字    例如:“A3”格式转为“13”

 
//将int类型的irow转换为string类型的srow
	string srow;
	string scol;
	string result;
	stringstream sstemp;
	sstemp << irow;
	sstemp >> srow;
	//当列数小于等于26时 返回值为单个字母+数字
	if (icol <= 26 && icol > 0)
	{
		char ctemp = 'A';
		ctemp = 'A' + icol - 1;
		result = ctemp + srow;
		return result;
	}
	//目前只考虑列数范围在ZZ以内
	//当列数大于26时 返回值为两个字母+数字 
	else if(icol > 26)
	{
		//ctemp1 表示第一个字母
		char ctemp1 = 'A';		
		//ctemp2 表示第二个字母
		char ctemp2 = 'A';
		int itemp1 = (icol - 1) / 26 - 1;
		int itemp2 = icol % 26 - 1;
		if (itemp2 == -1)
		{
			itemp2 = 25;
		}
		ctemp1 = 'A' + itemp1;
		ctemp2 = 'A' + itemp2;
		//将字符类型转换为字符串类型
		stringstream sstemp1;
		stringstream sstemp2;
		sstemp1 << ctemp1;
		sstemp2 << ctemp2;
		scol = sstemp1.str() + sstemp2.str();
		result = scol + srow;
		return result;
	}
代码下载:https://download.csdn.net/download/yuer_xiao/10344650

猜你喜欢

转载自blog.csdn.net/yuer_xiao/article/details/79917367