VS2008中C++打开Excel(MFC)——摘自网络,并加以细化
第一步:建立project(新建项目)
英文版
中文版
选择C++下的MFC Application(基于对话框的项目)
英文版
中文版
选择dialog based(基于对话框),中文。之后点击finish(完成)
第二步:导入EXCEL头文件
英文版
中文版-新建类
中文版-新建TypeLib中的MFC类
中文版-导入Excel相关类
选择Project->Add Class->MFC Class From Typelib后,点击Add,进入MFC Class From Typelib Wizard对话框下,
选择Microsoft Excel 11.0 Object Library<1.5>(我用的是Microsoft Office2003)将上图中Class添加进来。点击finish
并在TExcel.cpp开始添加:
#include"CApplication.h"
#include"CRange.h"
#include"CSheets.h"
#include"CWorkbook.h"
#include"CWorkbooks.h"
#include"CWorksheet.h"
#include"CWorksheets.h"
在每一个添加进来的头文件中去掉
#import "D:\Program Files X64\Microsoft Office\Office15\EXCEL.EXE" no_namespace
第三步:打开COM口
添加AfxOleInit();
第四步:建一个Button按钮
选择Toolbox中的Button在TExcel.rc的IDD_TEXCEL_DIALOG中点击,建立如上图的Button按钮将属性中的Caption修改为“打开Excel”
第五步:为Button按钮编写程序
双击“打开Excel”
1 void CTExcelDlg::OnBnClickedButton1() 2 { 3 // TODO: 在此添加控件通知处理程序代码 4 CApplication objApp; //判断是否存在EXCEL应用程序 5 CWorkbooks objBooks; 6 CWorkbook objBook; 7 CWorksheets objSheets; 8 CWorksheet objSheet; 9 CRange objRange,usedRange;//单元格获取 10 VARIANT ret; 11 12 objApp.CreateDispatch(_T("Excel.Application"));//判断是否存在EXCEL应用程序 13 COleVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); 14 objApp.put_Visible(TRUE); 15 objApp.put_UserControl(TRUE); 16 LPDISPATCH pwkbooks=objApp.get_Workbooks(); 17 objBooks.AttachDispatch(pwkbooks,TRUE); 18 char currentprogrampath[MAX_PATH]; 19 objBooks=objApp.get_Workbooks(); 20 objBook=objBooks.Add(VOptional); 21 objSheets=objBook.get_Sheets(); 22 CString str; 23 24 str="A1"; 25 objSheet=objSheets.get_Item(COleVariant((short)1)); 26 objRange=objSheet.get_Range(COleVariant(str),COleVariant(str)); 27 objRange=objSheet.get_Range(COleVariant(_T("C4")),COleVariant(_T("B4"))); 28 objRange.put_Formula(COleVariant(_T("=RAND()*100000"))); 29 objRange.put_NumberFormat(COleVariant(_T("$0.00"))); 30 usedRange=objRange.get_EntireColumn(); 31 usedRange.AutoFit(); 32 }
第六步:避免Error 2 error C2059: syntax error : ','
将CRange.h下VARIANT DialogBox()改为VARIANT _DialogBox()
最后运行: