还剩6页未读,继续阅读
文本内容:
()15条消息VS2017,MFC对WPS下Excel表格的操作、添加类库1Excel、在菜单栏的项目〃-添加新项目下的1-MFC TypeLiabrary选择可看到对应的文件路径,从文件夹中添加mircosoft excel....dll主要用到以下几个类表示整个的应用程序,包含一个工作簿集合.Application:Excel:工作簿集合,包含个工作簿()Workbooks NWorkbook工作簿,包含一个工作表()集合_Workbook:sheets:工作表集合,包含个工作表Worksheets N工作表,也就是我们在中看到的、_Worksheet:Excel Sheetl它是我们操作的基本单位Sheet2Sheet3,Excels这是单元格的集合,我们知道是由一个个的单元格组Range:Excel成的,通过来操作单元格Range用于设置单元格的字体、颜色、字号、粗体设置Font:设置底色Interior:设置区域内所有单元格的边框,如果要设置一组区域的Boards:外边框的话用设置Rang-BorderAround下面举个我自己的例子进行说明、库初始化2COM通常在的里面加入初始化和关闭库的操App InitlnstanceOCOM作,在调用之前加入初始化的代码:DoModalif!AfxOleInit出错!;AfxMessageBox_T±ffi COMreturnFALSE;、报大量错误3Excel.tlh因为加载的类与本身自带的起了冲突解决办法vs,注释掉每个头文件的1#import C:\Program Files\MicrosoftOffice\Officel2\EXCEL.EXE no_namespace,在添加的头文件中每个里面都加入2,#includevafxdisp.h然后在中的改成3,CRange.h VARIANTDialogBox VARIANT_DialogBox.在文件中,添加4stdafx.h#include CApplication.h#include CRange.h#include CWorkbook.h#include CWorkbooks.h#include CWorksheet.h#include CWorksheets.h#includeCFont
0.h#includeCnterior.h#includeCBorder.h、代码演示一些操作4在中定义一些全局变量.hCApplication app;CWorkbooks books;CWorkbook book;CWorksheets sheets;CWorksheet sheet;CRange range;LPDISPATCH IpDisp;COIeVariant vResult;;CString str=_T在*文件中进行操作dlg.cpp打开表格,进行一系列对象的初始化Excelvoid CFirstWorkDlg::OpenExcelCString szFileName,INTiSheetif!app.CreateDispatch_TExcel.Application,NULLAfxMessageBox_TCreate Excelservice failure!;return;//设置为时,后面的叩注释要打开FALSE p.Quit;//否则进程会一直存在,并且每操作一次就会多开一个EXCEL.EXE进程app.put_VisibleFALSE;books.AttachDispatchapp.get_Workbooks,true;/**打开一个工作簿只需要个参数就行,需要个参数*Excel200013Excel200315VIpDisp=books.OpenszFileName,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional;ASSERTlpDisp;book.AttachDispatchlpDisp;//得到Worksheetssheets.AttachDispatchbook.get_Worksheets true;///得到Worksheetsheet.AttachDispatchsheets.get_Item_variant_tiSheet;〃得到全部Cells//range.AttachDispatchsheet.get_Cells,true;按钮单击事件函数,读取表格内容并放到控件中Excel ListControlvoid CFirstWorkDlg::OnBnClickedReadCFileDialog fileDlgTRUE,_T*.xls|*.xls NULL,,OFN_HIDEREADONLY|OFN.OVERWRITEPROMPT,_TMaterial File*.xls|*.xls||,this;CString szFileName;if fileDlg.DoModal==IDOKszFileName=fileDlg.GetPathName;,,,1_T C:\\Users\\Administrator\\Desktop\\ENGDATA.xls;INT iSheet=1;OpenExcelszFileNameJSheet;mJist.DeleteAIIItems;CRange oCurSel;range.AttachDispatchsheet.get_UsedRange;range.AttachDispatchrange.get_Rows;long row=range.get_Count;range.AttachDispatchrange.get_Columns;二long colrange.get_Count;range.AttachDispatchsheet.get_Cells true;zfor inti=1;i=row;++ifor intj=l;j=col;++joCurSeLAttachDispatchrange.getJtem_variant_tlongi/_variant_tlongj,pdispVal;vResult=oCurSel.get_Text;;//VARIANT res=oCurSel.get_Text//CString strRes=res.bstrVal;str=vResult.bstrVal;二二if1imJist.InsertColumnQ-l,str,LVCFMT_CENTER100,-1;Z二二else if1jmJist.InsertItemi-2,str;elsem_list.SetItemTexti-2j-l,str;/*switch vResult.vt//字符串case VT_BSTR:str=vResult.bstrVal;break;字节的数字case VT_R8://8str.Format_T%f,vResult.dblVal;break;〃时间格式case VT_DATE:SYSTEMTIME st;VariantTimeToSystemTimevResultdate,st;break;//单元格空的case VT_EMPTY:str=break;CloseExcelQ;释放对象voidCFirstWorkDlg::CloseExcel//保存的内容//book.SaveO;Excel//弹出对话框询问是否保存//app.put_DisplayAlertstrue;//退出app.Quit;〃释放对象range.ReleaseDispatch;sheet.ReleaseDispatch;sheets.ReleaseDispatch;book.ReleaseDispatch;books.ReleaseDispatch;app.ReleaseDispatch;、其他对表格的操作可参考另一位仁兄的博客5Excel上面就是一些对于的基本操作,如果有什么问题希望大家能够Excel指出!。