VC 操作Ex cel 的方法(2007-01-05 21:18:45) 分类:VC,VB,Matlab 编程开发 A: 从classwizard 中add class 处from type library,去office 的安装目录下引入excel.exe(这是office 2003的选择,其他版本都是用olb文件),服务器就算引入了,这时会弹出对话框,要求加入一些类,这些类都是一些接口,里面有大量的方法,类的对象表征着 excel 文件的一个个部分,常用的有这几个_application,workbooks,_workbook,worksheets,_worksheet,Range,它们分别代表不同的意义._application 代表了EXCEL 服务器,workbooks 表示整个 Excel 服务器(表现为一个.xls 文件)里所有的表,(可以通过"新建"得到多个表,即 MDI 程序里的一个视窗一样,所有的视窗就是workbooks), _workbook 就是一个表,相当于 MDI 中的一个视窗, worksheets 表示所有的表单,每个表都可能有很多表单(建立一个 Excel 文件之后,打开,可以看到有 sheet1,sheet2等,所有这些 sheetn 就组成了worksheets), _worksheet 就表示一个表单, range 表示元素的集合. 搞清楚上面这几个名词的意思非常重要. B,在 dlg.h 中声明下面几个变量: _Application exlapp; //组件服务器的各个 classes _Workbook wbk; Workbooks wbks; _Worksheet wht; Worksheets whts; LPDISPATCH lpDisp; 并在 app.cpp 的InitInstance 方法中加入下面两句 AfxInitOle(); AfxEnableControlContainer(); C,这里我没有像上面一样完全用程序来生成一个 Excel 文件,而是在开始时就在当前目录下生成了一个 Excel 文件,在对话框上我设置了两个按钮,下面是"显示"按钮的代码: //创建 Excel 服务器 if(!exlapp.CreateDispatch("Excel.Application")) { AfxMessageBox("无法启动 Excel 服务器!"); return; } COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR); exlapp.SetVisible(TRUE);//使 Excel 可见 exlapp.SetUserControl(TRUE);//允许其它用户控制 Excel,否则 Excel 将一闪即逝. //Open an excel file char path[MAX_PATH]; GetCurrentDirectory(MAX_PATH,path); CString strPath = path; strPath += "\\VCOpExcel"; wbks.AttachDispatch(exlapp.GetWorkbooks()); lpDisp=wbks.Open(strPath, avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar); wbks.ReleaseDispatch(); exlapp.ReleaseDispatch(); D,与...