一、首先,初始化和释放COM环境。
1、在OnInitDialog()函数中初始化COM环境
<span style="white-space:pre"> </span>SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
::CoInitialize(NULL); //初始化COM环境
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
2、重载OnDestroy函数,并添加释放COM环境的代码如下
void CExportExcelDlg::OnDestroy()
{
CDialog::OnDestroy();
::CoUninitialize(); //释放COM环境
}
二、Excel接口的处理
为了能调用Excel的接口,打开类向导,选择Add Class->From a type library,在Excel安装路径中选择EXCEL.exe,可以只把一些比较常用的类如_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range加进去(我用的是VS2103,添加这些类的时候就见了一个头文件(.h),没有.cpp,而且把这些加进去之后编译报错,我在网上找了一下,这种情况好像好不少,也没找到解决的办法,只有用VC6.0生成这两个文件了,然后把这两个文件添加到项目中就好了,这两个文件在群上)。
三、创建一个excel模板
在利用加载Excel模板来生成要求的表格,在本工程Debug文件夹中建立一个Excel文件,命名为template.xls
四、添加一个Button控件,并添加消息响应好函数,定义变量如下:
<span style="white-space:pre"> </span>Range m_ExlRge; _Worksheet m_ExlSheet; Worksheets m_ExlSheets; _Workbook m_ExlBook; Workbooks m_ExlBooks; _Application m_ExlApp; COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); |
五、创建Excel服务
<span style="white-space:pre"> </span>if (!m_ExlApp.CreateDispatch(L"Excel.Application", NULL)) ///用m_ExlApp对象创建Excel进程
{
AfxMessageBox(L"创建Excel服务失败!");
return;
}