vc 操作Excel模板步骤.doc
文本预览下载声明
最近刚完成一个例子,受益不菲,和大家分享一下。
VC的Excel编程操作,总结:(结合网络资源)
利用VC操作Excel的方法至少有两种
1 .利用ODBC把Excel文件当成数据库文件,来进行读、写、修改等操作,网上有人编写了CSpreadSheet类,提供支持。(不太能理解CSpreadSheet)
2. 利用Automation(OLD Automation)方法。将Excel当成组件服务器,利用VBA。又分为基于MFC的和SDK两种。(制作报表适用)
??? 主要研究了一下第二种基于MFC的OLE编程方法。
一、Excel的对象模型
?????? Application:代表应用程序本身。即Excel应用程序
?????? Workbooks:是Workbook 的集合,代表了工作薄。
?????? Worksheets:是Worksheet的集合,是Workbook的子对象。
?????? Range:是Worksheet的子对象,可以理解为Sheet中一定范围的单元格。
?????? Shapes:是Worksheet的子对象,用于存储图片等信息的单元格。
二、VC操作Excel的初始化过程
?1、导入Excel库文件。
????? 使用VC6.0的同志们可进行一下操作获取Excel库文件:
启动VC 6.0,打开新建对话框,新建一个MFC AppWizard(exe)工程,这里工程明设置为TestExcel。
进入MFC 应用程序向导,选择 基本对话框,直接点击完成,工程文件结构如下图:
打开MFC ClassWizard窗口(查看—建立类向导),选择Automation,单击Add Class按钮,选择From a type library...,弹出文件选择对话框,之后定位到Microsoft Office的安装目录(通常为C:\Program Files\Microsoft Office\Office),选择excel.exe适用于Excel2003;EXCEL9.OLB适用于Excel2000),确定后,弹出Confirm Classes窗口,选择列表中的所有类,单击OK按钮。
返回编辑器,查看工程文件,可发现多了EXCEL9.H及EXCEL9.CPP两个文件。
?? 打开stdafx.h头文件确保包含如下头文件:
#include afxdisp.h
#include excel.h
打开TestExcel.cpp文件,修改CTestExcelApp::InitInstance(),加入如下代码:
BOOL CTestExcelApp::InitInstance()
{COM组件
if( !AfxOleInit() ){
AfxMessageBox(初始化Ole出错!);
return FALSE;
}
AfxEnableControlContainer();
......
......
return FALSE;
}
为保证编译时不产生重复定义错误,打开excel.h文件,在文件开始位置加入如下代码:
#if !defined _HEAD_FILE_EXCEL_
#define _HEAD_FILE_EXCEL_
相应的,在文件末尾加入:
#endif
操作EXCEL文件
??选择ResourceView工作区,打开IDD_TESTEXCEL_DIALOG,在对话框中添加一个按钮控件Button1,双击它,生成一个Button1 Click事件的处理函数:
void CTestExcelDlg::OnButton1(){
// TODO: Add your control notification handler code here
}
在OnButton1()函数中,添加代码:
void CTestExcelDlg::OnButton1() {
// 制单
CComboBox *pCmb = (CComboBox *)GetDlgItem(IDC_COMBO1);
int pos = pCmb-GetCurSel();
if (pos == 0)
{
MessageBox(TEXT(请选择销售订单号!), TEXT(注意));
return ;
}
else
{//参数定义不再赘述
CEdit *pEdt = (CEdit *)GetDlgItem(IDC_EDIT1);
pCmb-GetLBText(pos,m_oOrderID);//订单号
pEdt-GetWindowTextW(m_oDeliveryDate);//交货日期
pEdt
显示全部