VC操作Excel的方法技能提升篇.docx
- 文档编号:462000
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:19
- 大小:39.97KB
VC操作Excel的方法技能提升篇.docx
《VC操作Excel的方法技能提升篇.docx》由会员分享,可在线阅读,更多相关《VC操作Excel的方法技能提升篇.docx(19页珍藏版)》请在冰豆网上搜索。
VC操作Excel的方法技能提升篇
VC操作Excel的方法(2007-01-0521:
18:
45)
分类:
VC,VB,Matlab编程开发
A:
从classwizard中addclass处fromtypelibrary,去office的安装目录下引入excel.exe(这是office2003的选择,其他版本都是用olb文件),服务器就算引入了,这时会弹出对话框,要求加入一些类,这些类都是一些接口,里面有大量的方法,类的对象表征着excel文件的一个个部分,常用的有这几个_application,workbooks,_workbook,worksheets,_worksheet,Range,它们分别代表不同的意义._application代表了EXCEL服务器,workbooks表示整个Excel服务器(表现为一个.xls文件)里所有的表,(可以通过"新建"得到多个表,即MDI程序里的一个视窗一样,所有的视窗就是workbooks),_workbook就是一个表,相当于MDI中的一个视窗,worksheets表示所有的表单,每个表都可能有很多表单(建立一个Excel文件之后,打开,可以看到有sheet1,sheet2等,所有这些sheetn就组成了worksheets),_worksheet就表示一个表单,range表示元素的集合.搞清楚上面这几个名词的意思非常重要.
B,在dlg.h中声明下面几个变量:
_Applicationexlapp; //组件服务器的各个classes
_Workbookwbk;
Workbookswbks;
_Worksheetwht;
Worksheetswhts;
LPDISPATCHlpDisp;
并在app.cpp的InitInstance方法中加入下面两句AfxInitOle();AfxEnableControlContainer();
C,这里我没有像上面一样完全用程序来生成一个Excel文件,而是在开始时就在当前目录下生成了一个Excel文件,在对话框上我设置了两个按钮,下面是"显示"按钮的代码:
//创建Excel服务器
if(!
exlapp.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!
");
return;
}
COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
exlapp.SetVisible(TRUE);//使Excel可见
exlapp.SetUserControl(TRUE);//允许其它用户控制Excel,否则Excel将一闪即逝.
//Openanexcelfile
charpath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CStringstrPath=path;
strPath+="\\VCOpExcel";
wbks.AttachDispatch(exlapp.GetWorkbooks());
lpDisp=wbks.Open(strPath,
avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);
wbks.ReleaseDispatch();
exlapp.ReleaseDispatch();
D,与上面第一种方法一样,可以插入记录:
UpdateData(); //读入数据
if(""==m_name) //判断名字输入有效
{
MessageBox("Pleaseinputarightname");
return;
}
if(0>=m_age||100<=m_age) //判断年龄输入有效
{
MessageBox("Pleaseinputarightage");
return;
}
char*p=strupr(_strdup(m_gener));
if(strcmp(p,"FEMALE")&&strcmp(p,"MALE"))//判断性别输入有效
{
MessageBox("Pleaseinputarightgener");
return;
}
Rangerange;
RangeusedRange;
COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if(!
exlapp.CreateDispatch("Excel.Application"))//启动服务器
{
AfxMessageBox("无法启动Excel服务器!
");
return;
}
charpath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CStringstrPath=path;
strPath+="\\VCOpExcel";
wbks.AttachDispatch(exlapp.GetWorkbooks());
lpDisp=wbks.Open(strPath, //初始化.
avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);
wbk.AttachDispatch(lpDisp);
whts.AttachDispatch(wbk.GetWorksheets());
lpDisp=wbk.GetActiveSheet();
wht.AttachDispatch(lpDisp);
usedRange.AttachDispatch(wht.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
longiRowNum=range.GetCount();//已经使用的行数
range.AttachDispatch(wht.GetCells());
range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long
(1)),COleVariant(m_name));
range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long
(2)),COleVariant(m_age));
range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(3)),COleVariant(m_gener));
wbk.Save();
wbk.Close(avar,COleVariant(strPath),avar);
wbks.Close();
exlapp.Quit();
(完)
分享到新浪微博
阅读(802)|评论
(2)|收藏(0)|打印|举报
前一篇:
结婚流程(转)
后一篇:
vc excel 操作补充
评论 重要提示:
警惕虚假中奖信息,点击查看详情 免费任选1000款游戏新手卡[发评论]
你好:
2007-01-1112:
30:
31
我参考你的文章做了一下关于excel的操作
但是执行
if(!
ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxmessageBox("创建Excel服务失败");
exit
(1);
}
总是失败。
博主回复:
拼命三郎:
2007-01-1209:
06:
12
欢迎光临我的blog :
>
对组件得先进行初始化COM
在.app 文件的InitInstance()函数加入AfxOleInit();
或
if (CoInitialize(NULL)!
=0)
{
AfxMessageBox("初始化COM支持库失败!
");
exit
(1);
VC中操作excel表格收藏
摘要:
使用MicrosoftOffice所带的控件来实现代码操作excel表格。
操作系统是MicrosoftXP,办公套装是MicrosoftOffice2003,编程环境是MicrosoftVisualStudio6.0,一切都是Microsoft。
我最近要将数据库中的内容查询出来放到excel表格以便打印,所以上网找了这方面的内容,这里主要是抛砖引玉。
从思路上来看,操作excel表格就是将其打开,然后写入/读出数据,然后关闭。
首先创建一个程序(我的例子是一个MFC的单文档程序),在程序的入口处和出口处先作这样两个步骤来支持COM库:
在程序入口处CXXXApp:
:
InitInstance()函数AfxEnableControlContainer();语句之后加入下面几行:
if(CoInitialize(NULL)!
=0)
{
AfxMessageBox(“初始化COM支持库失败!
”);
exit
(1);
}
假如这个条件不通过就不能运行起程序。
在程序的出口处CXXXApp:
:
ExitInstance()函数return语句之前加入下面这句话:
CoUninitialize();来释放COM支持库。
这样对COM支持库的代码已经完成。
下面要从Office的安装目录中找到对VC操作excel文件的动态库,在某些版本下这个文件是Excel8.olb或者Excel9.olb,在我的版本中是excel.exe这个exe也是动态库的形式,是微软公司主要的文件结果之一。
选择vc的View菜单里面的ClassWizad命令,会弹出一个对话框;然后点击AddClass…按钮选择Fromatypelibrary,会弹出一个打开对话框,从这里打开Office安装目录下…\Office11\EXCEL.EXE文件,从里面选择几个要用到的类:
_Application,Workbooks,_Wrokbook,Worksheets,_WorkSheet,Range,点击OK按钮。
会在程序中生成一个excel.h和excel.cpp文件,这些文件中包含了刚才我们选择的几个类的代码。
下面介绍一下这几个类:
在vc操纵excel的exe动态库里面有好多个对象模型,就是刚才在创建过程中看到的那个列表,但是经常用到的有这么几个:
_Application,Workbooks,_Wrokbook,Worksheets,_WorkSheet,Range,Charts和_Chart,最后面的两个是用来操作图表的,我没有用到所以这里也就不记录了。
_Application:
这里的Application就是Excel本身,众所周知,一个Excel可以包含多个工作簿,每个工作簿又可以包含多个工作表,而每个工作表又可以包含多个区域或者图表,所以这里他们是树型的结构关系,而application最基本的一个功能就是找到它的子项工作簿。
果然,我们在引入我们程序的Application类中看到了这样的成员函数:
GetWorkbooks()。
既然application就是excel,那
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 操作 Excel 方法 技能 提升
![提示](https://static.bdocx.com/images/bang_tan.gif)