C++代码操作EXCEL(新建,读写,保存)

类库导入

  1. 右键—>建立类向导—>Add Class—>From a Type Lib…—>File(选中EXCEL.EXE), 就可以生成excel.h,excel.cpp
    在这里插入图片描述
    2)
    3)

初始化COM

if (!AfxOleInit())
{
	AfxMessageBox(AFX_IDP_FAILED_TO_CREATE);
	return false;
}

打开EXCEL文件,没有就新建BOOK

CString strFile = excel文件path;
_Application ExcelApp; 
Workbooks wbsMyBooks; 
_Workbook wbMyBook; 
Worksheets wssMysheets; 
_Worksheet wsMysheet; 
try
{
	Range rgMyRge; 
	if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) 
	{ 
		return;
	} 
	// Excelの警告不表示
	ExcelApp.SetDisplayAlerts(FALSE);
	COleVariant option((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
	wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
	// excel文件存在时
	if(hasExcelFile){
		wbMyBook.AttachDispatch(wbsMyBooks.Open(strFile, 
			option,option,option,option,option,option,
			option,option,option,option,option,option)); 
	}
	// excel文件不存在时
	else
	{
		wbMyBook = wbsMyBooks.Add(option);
	}
	wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);		
	wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t((long)1)),true);
}

保存 退出进程

		// Excel保存
		wbMyBook.SaveAs(COleVariant(strFilePath),
			_variant_t(vtMissing),
			_variant_t(vtMissing),
			_variant_t(vtMissing),
			_variant_t(vtMissing),
			_variant_t(vtMissing),
			0,
			_variant_t(vtMissing),
			_variant_t(vtMissing),
			_variant_t(vtMissing),
			_variant_t(vtMissing));
		wbMyBook.Close(_variant_t(false), _variant_t(strFilePath), _variant_t(true));
		wsMysheet.ReleaseDispatch();
		wssMysheets.ReleaseDispatch();
		wbMyBook.ReleaseDispatch();
		wbsMyBooks.ReleaseDispatch();
		ExcelApp.ReleaseDispatch();

EXCEL的基本操作

读cell内容

VARIANT var;
VariantInit(&var);
rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"),COleVariant("A1")));
var = rgMyRge.GetValue();
if(var.vt == VT_BSTR)
{
	strValue = var.bstrVal;
}
rgMyRge.ReleaseDispatch();

往cell里写内容

rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"),COleVariant("A1")));
rgMyRge.SetValue(COleVariant(strValue));
rgMyRge.ReleaseDispatch();

设置cell的格式

A1-D100的全部cell设置成文字列的格式

rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"), COleVariant("D100")));
rgMyRge.SetNumberFormat(COleVariant("@"));
rgMyRge.ReleaseDispatch();

合并单元格

rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"), COleVariant("A2")));
rgMyRge.SetMergeCells((COleVariant)(short)(TRUE));
rgMyRge.ReleaseDispatch();

设置列宽

rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"), COleVariant("A1")));
rgMyRge.SetColumnWidth(COleVariant((long)20));
rgMyRge.ReleaseDispatch();

设置背景色

//背景色
Interior it;
rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"), COleVariant("B20")));
it.AttachDispatch(rgMyRge.GetInterior());
it.SetColorIndex(_variant_t(long(20)));
it.ReleaseDispatch();
rgMyRge.ReleaseDispatch();

ColorIndex的颜色对应表
在这里插入图片描述

字体颜色设置

//字体颜色
Font font;
font.AttachDispatch(rgMyRge.GetFont());
font.SetColorIndex(COleVariant(long(3)));
font.ReleaseDispatch();

cell的外框线设置

//枠線
Borders bord;
rgMyRge.AttachDispatch(wsMysheet.GetRange(COleVariant("A1"), COleVariant("A1")));
bord.AttachDispatch(rgMyRge.GetBorders());
bord.SetColorIndex(_variant_t(long(1)));
bord.SetLineStyle(_variant_t(long(1)));
bord.SetWeight(_variant_t(long(2)));
bord.ReleaseDispatch();
rgMyRge.ReleaseDispatch();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值