资源描述:
《vc2010对excel的操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VC2010对Excel的操作1.创建新的C++工程创建基于对话框的MFC程序2.添加库、添加Excel类库在工程名上右键,选择“添加”—“类”(或者点击菜单栏的“项目”->“添加类”),选择“TypeLib中的MFC类”(MFCClassFromTypeLib)类来源选“注册表”,在可用的类型库中选择“MicrosoftExcel11.0ObjectLibrary<1.5>”在接口列表框中选择需要的类,在此,我们选择_Application,_Workbook,Worksheet,Range,Workbooks
2、,Worksheets这六个就可以了。可以看到,六个类被添加了进来。1.修改头文件分别将加进来的六个头文件上面的“#import"C:\ProgramFiles\MicrosoftOffice\OFFICE11\EXCEL.EXE"no_namespace”注释掉。2.添加头文件在stdAfx.h头文件中添加加进来的这几个头文件#include"CApplication.h"#include"CRange.h"#include"CWorkbook.h"#include"CWorkbooks.h"#incl
3、ude"CWorksheet.h"#include"CWorksheets.h"3.修改错误编译,会出现两个错误:…crange.h(335):warningC4003:“DialogBoxW”宏的实参不足…crange.h(335):errorC2059:语法错误:“,”双击错误提示,定位在错误行,VARIANTDialogBox(){VARIANTresult;InvokeHelper(0xf5,DISPATCH_METHOD,VT_VARIANT,(void*)&result,NULL);returnr
4、esult;}将该函数名“DialogBox()”前面加“_”下划线,即“_DialogBox()”,这样就可以编译成功了。4.在对话框中添加一个编辑框,并为其关联一CEdit类型变量m_Path,添加“打开”按钮,实现打开一已经存在的Excel文件。并将路径显示在编辑框中。实现代码如下。voidCExportToExcelDlg::OnBnClickedButtonOpen(){CFileDialogfile(TRUE,NULL,NULL,OFN_HIDEREADONLY
5、OFN_OVERWRITEPROMPT
6、,_T("EXCEL文件t(*.xls;*.xlsx)
7、*.xls;*.xlsx
8、
9、"),AfxGetMainWnd());if(file.DoModal()==IDOK){CStringstrPath=file.GetPathName();m_Path.SetWindowTextW(strPath);CApplicationapp;CWorkbookbook;CWorkbooksbooks;if(!app.CreateDispatch(_T("Excel.Application"))){MessageBox(_
10、T("Error!CreatExcelApplicationServerFaile!"));exit(1);}//books.AttachDispatch(app.get_Workbooks(),true);//book.AttachDispatch(books.Add(_variant_t(strPath)));books=app.get_Workbooks();book=books.Add(_variant_t(strPath));app.put_Visible(true);//结尾,释放book.Relea
11、seDispatch();books.ReleaseDispatch();app.ReleaseDispatch();app.Quit();}}1.在对话框中添加“写入”按钮,实现新建一Excel文件(存在则覆盖),并向文件中写入数据。实现代码如下。voidCExportToExcelDlg::OnBnClickedButtonWrite(){CStringstrFile=_T("D:\WriteToExcelTest.xlsx");COleVariantcovTrue((short)TRUE),covFals
12、e((short)FALSE),covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);CApplicationapp;CWorkbookbook;CWorkbooksbooks;CWorksheetsheet;CWorksheetssheets;CRangerange;CFontfont;if(!app.CreateDispat