没有合适的资源?快使用搜索试试~ 我知道了~
VC操作Excel.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 168 浏览量
2022-11-12
02:08:32
上传
评论
收藏 804KB PDF 举报
温馨提示
试读
24页
。。。
资源推荐
资源详情
资源评论
VC 操作 Excel 的方法(2007-01-05 21:18:45)
分类:VC,VB,Matlab 编程开发
A: 从 classwizard 中 add class 处 from type library,去 office 的安装目录下引入 excel.exe(这是
office 2003的选择,其他版本都是用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 中声明下面几个变量:
_Application exlapp; //组件服务器的各个 classes
_Workbook wbk;
Workbooks wbks;
_Worksheet wht;
Worksheets whts;
LPDISPATCH lpDisp;
并在 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 将一闪即逝.
//Open an excel file
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = 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("Please input a right name");
return;
}
if (0>=m_age||100<=m_age) //判断年龄输入有效
{
MessageBox("Please input a right age");
return;
}
char *p=strupr(_strdup(m_gener));
if (strcmp(p,"FEMALE")&&strcmp(p,"MALE")) //判断性别输入有效
{
MessageBox("Please input a right gener");
return;
}
Range range;
Range usedRange;
COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if(!exlapp.CreateDispatch("Excel.Application")) //启动服务器
{
AfxMessageBox("无法启动 Excel 服务器!");
return;
}
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = 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());
long iRowNum=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-11 12:30:31
我参考你的文章做了一下关于 excel 的操作
但是执行
if(!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxmessageBox("创建 Excel 服务失败");
exit(1);
}
总是失败。
拼命三郎:
2007-01-12 09:06:12
欢迎光临我的 blog :>
对组件得先进行初始化 COM
在.app 文件的 InitInstance()函数加入 AfxOleInit();
或
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化 COM 支持库失败!");
exit(1);
VC 中操作 excel 表格 收藏
摘要:使用 Microsoft Office 所带的控件来实现代码操作 excel 表格。
操作系统是 Microsoft XP,办公套装是 Microsoft Office 2003,编程环境是 Microsoft
Visual Studio 6.0,一切都是 Microsoft。
我最近要将数据库中的内容查询出来放到 excel 表格以便打印,所以上网找了这方面的
内容,这里主要是抛砖引玉。
从思路上来看,操作 excel 表格就是将其打开,然后写入/读出数据,然后关闭。
首先创建一个程序(我的例子是一个 MFC 的单文档程序),在程序的入口处和出口处
先作这样两个步骤来支持 COM 库:
在程序入口处CXXXApp:: InitInstance()函数 AfxEnableControlContainer();语句之后加入
下面几行:
if (CoInitialize(NULL) != 0)
{
}
假如这个条件不通过就不能运行起程序。
在程序的出口处 CXXXApp:: ExitInstance()函数 return 语句之前加入下面这句话:CoUn
initialize();来释放 COM 支持库。
这样对 COM 支持库的代码已经完成。
下面要从 Office 的安装目录中找到对 VC 操作 excel 文件的动态库,在某些版本下这个
文件是 Excel8.olb 或者 Excel9.olb,在我的版本中是 excel.exe 这个 exe 也是动态库的形式,
是微软公司主要的文件结果之一。选择 vc 的 View 菜单里面的 ClassWizad 命令,会弹出一
个对话框;然后点击 Add Class…按钮选择 From a type library,会弹出一个打开对话框,
从这里打开 Office 安装目录下…\Office11\EXCEL.EXE 文件,从里面选择几个要用到的类:
_Application, Workbooks, _Wrokbook, Worksheets, _WorkSheet, Range,点击 OK 按钮。会
在程序中生成一个 excel.h 和 excel.cpp 文件,这些文件中包含了刚才我们选择的几个类的代
码。下面介绍一下这几个类:
AfxMessageBox(“初始化 COM 支持库失败!”);
exit(1);
在 vc 操纵 excel 的 exe 动态库里面有好多个对象模型,就是刚才在创建过程中看到的那
个列表,但是经常用到的有这么几个:_Application, Workbooks, _Wrokbook, Worksheets, _
WorkSheet, Range,Charts 和_Chart,最后面的两个是用来操作图表的,我没有用到所以这
里也就不记录了。
_Application:这里的 Application 就是 Excel 本身,众所周知,一个 Excel 可以包含多个
工作簿,每个工作簿又可以包含多个工作表,而每个工作表又可以包含多个区域或者图表,
所以这里他们是树型的结构关系,而 application 最基本的一个功能就是找到它的子项工作
簿。果然,我们在引入我们程序的 Application 类中看到了这样的成员函数:GetWorkbooks()。
既然 application 就是 excel,那么打开程序,退出程序,显示/隐藏程序这些基本的操作都可
以在这个类的成员函数中找到,果不其然。
Workbooks:这个对象是一个容器对象,它里面存放着所有打开的工作簿。因此,我们
可以猜测它一定有添加,查找,打开/关闭工作簿的功能。(本程序中使用 excel 的一个 xlt
模板来生成一个 xls 文件就是使用了这个容器对象的添加功能。)
_Workbook:这是一个工作簿,也就相当于一个xls 文件。Excel 可以同时打开多个工作
簿,所以工作簿之间必定能够互相切换,每个工作簿可以关联工作表容器并获得工作表的索
引。
Worksheets:也是一个容器对象,和 Workbooks 类似。
_Worksheet:这个就是我们看到的工作表,比如 Sheet1,sheet2 等等。
Rang:就是我们看到的能选中的方框的大小。而我们所要作的操作基本上是以区域为
单位进行的。
介绍完这些,就添加一个菜单,来响应操作 excel 的命令。
然后下面附带这个函数的内容,注释还算可以吧,并且附上网上不知道谁写的但是转载
极多的一个封装类。
view plaincopy to clipboardprint?
1.
2.
3.
4.
5.
_Application _app;
_Workbook _workBook;
_Worksheet _workSheet;
Worksheets workSheets;
Workbooks workBooks;
剩余23页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6507
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功