VC代码解读,新建或者打开EXCEL文件

之前做操作EXCEL文件也有好几次了,但是每次都是从网文上复制粘贴,从没有自己仔细研究过,所以遇到问题也只从网上寻找答案,一点自己的见解也没有,意识到这种方式不可取,才有了这篇文章。大神飘过即可,希望对于像我一样的菜鸟们有所帮助

//新建一个Excel表格,并对其进行编辑,声明使用的各变量
	CApplication _app;//指向的是EXCEL程序
	CWorkbooks workbooks;//所有workbook的集合,或者指的是所有excel文件的集合?
	CWorkbook workbook;//指的是某一个excel文件,或者说该文件中所有worksheet的集合	
	CWorksheets worksheets;//指的是某一个文件中worksheet可控制的集合
	CWorksheet worksheet;//指的是某一个worksheet,或者说该worksheet中所有单元格的集合
	CRange range;//某一个worksheet中可控制的单元格的集合
	LPDISPATCH lpDisp;
	COleVariant vResult((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
	COleVariant valTemp((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
	//进行预备工作,该函数的工作原理是
	//查找注册表中的HKEY_CLASSES_ROOT/CLSID 各项中的ProgID是否和Excel.Application匹配,匹配则查找该目录下的LocalServer,其中包含了excel的exe文件目录,进行启动
	if(!_app.CreateDispatch(L"Excel.Application"))
	{
		MessageBox(L"启动excel程序失败",L"提示",0);
		return;
	}
	//获得所有工作表
	workbooks.AttachDispatch(_app.get_Workbooks());
	//新建工作表,必须指出的是valTemp必须是赋值之后的!!!!,否则不能通过
	workbook.AttachDispatch(workbooks.Add(valTemp));
	///
	//       若是打开已有文件                                                                               ///
	//       lpDisp = workbooks.Open(L"D:\\3.xlsx",valTemp, valTemp, valTemp, valTemp, valTemp,valTemp,     ///
	//       valTemp, valTemp, valTemp, valTemp,valTemp, valTemp, valTemp,valTemp);                        
	//得到Workbook                                                                                          ///
	//workbook.AttachDispatch(lpDisp);                                                                      ///
	///

	//获得该工作表的worksheets
	worksheets.AttachDispatch(workbook.get_Worksheets());
	//获得第二个worksheet!!!!!!!!!!!!!!!!!!!!!!!!!!
	worksheet.AttachDispatch(worksheets.get_Item(COleVariant((long)2)));
	//初始化range,使之指向该worksheet的范围内
	range.AttachDispatch(worksheet.get_Cells());
	range.AttachDispatch(range.get_Item(COleVariant((long)1),			COleVariant((long)2)).pdispVal);		
	range.put_Value2(COleVariant(L"测试"));

	//将在内存中创建的excel文件保存到磁盘上,或者说将从磁盘上读取到的文件,处理之后保存为其他的文件
	workbook.SaveAs(COleVariant(L"D:\\temp.xlsx"),vResult,vResult,vResult,vResult,vResult,0,vResult,vResult,vResult,vResult,vResult);
	range.ReleaseDispatch();
	worksheet.ReleaseDispatch();
	worksheets.ReleaseDispatch();	
	workbook.ReleaseDispatch();
	workbooks.ReleaseDispatch();	
	//必须是这种顺序,程序执行后,EXCEL进程才能被关闭
	_app.Quit();
	_app.ReleaseDispatch();

PS:经过这次的整理,自己有了较大的提高,至少知道了,每个语句的作用,当然注释中有的是自己的理解,水平有限,希望大神指正!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值