ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:214.31KB ,
资源ID:3685379      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3685379.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC中使用EXCEL方法及源码文档格式.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MFC中使用EXCEL方法及源码文档格式.docx

1、defined _HEAD_FILE_EXCEL9_#define _HEAD_FILE_EXCEL9_相应的,在文件末尾加入:#endif成功二、操作EXCEL文件1. 新建一个excel表,并填充两个单元格的实例void CTestExcelDlg:OnButton1()/WorkbooksWorkbook WorksheetsWorksheet Range_Application app; /Excel应用程序接口Workbooks books; /工作薄集合_Workbook book; /工作薄Worksheets sheets; /工作表集合_Worksheet sheet; /工

2、作表Range range; /Excel中针对单元格的操作都应先获取其对应的Range对象Font font;Range cols;/*COleVariant类为VARIANT数据类型的包装,在自动化程序中,通常都使用VARIANT数据类型进行参数传递。故下列程序中,函数参数都是通过COleVariant类来转换了的。*/covOptional 可选参数的VARIANT类型COleVariant covOptional(long)DISP_E_PARAMNOTFOUND, VT_ERROR);app.CreateDispatch(Excel.Application) )this-Messag

3、eBox(无法创建Excel应用!return;/获取工作薄集合books=app.GetWorkbooks();/添加一个工作薄book=books.Add(covOptional);/获取工作表集合sheets=book.GetSheets();/获取第一个工作表sheet=sheets.GetItem(COleVariant(short)1);/选择工作表中A1:A1单元格区域range=sheet.GetRange(COleVariant(A1),COleVariant();/设置A1=HELLO EXCEL!range.SetValue(COleVariant(HELLO EXCEL

4、!/调整格式,设置粗体font=range.GetFont();font.SetBold(COleVariant(short)TRUE);/选择A2单元格,插入一个公式=RAND()*100000,并设置A2数字格式为货币形式A2range.SetFormula(COleVariant(range.SetNumberFormat(COleVariant($0.00/选择A:A列,设置宽度为自动适应cols=range.GetEntireColumn();cols.AutoFit();/显示Excel表格,并设置状态为用户可控制app.SetVisible(TRUE);app.SetUserCo

5、ntrol(TRUE);2. 打开一个已有的excel表格实例CString strPath; strPath += C:template.xlt; / 模板的路径 CFileFind filefind;filefind.FindFile( strPath ) ) AfxMessageBox( 没有找到模版文档,请其查找 ); return; LPDISPATCH lpDisp; /接口指针lpDisp = books.Open(m_filepath, covOptional, covOptional, covOptional, covOptional, covOptional, covOpt

6、ional /与的不同,是个参数的,直接在后面加了两个covOptional成功了book.AttachDispatch(lpDisp);3. 保存一个excel文件实例book.SetSaved(TRUE);4. 另存一个excel文件实例book.SaveAs(COleVariant(m_filename),covOptional, covOptional,covOptional, covOptional,covOptional,(long)0,covOptional,covOptional,covOptional,covOptional,covOptional); /与的不同,是个参数的

7、,直接在后面加了两个covOptional成功了5. 释放一个excel文件实例经试验证实,不释放第二次使用excel时会中断,放在类的析构里面有时调用不到,主动调用最保险。(有没有AttachDispatch()过都要释放,否则报错)/释放对象(相当重要!) Rang.ReleaseDispatch();sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();/退出程序 app.Quit();/m_ExlApp一定要释放,否则程序结束后还会有一个Excel进

8、程驻留在内存中,而且程序重复运行的时候会出错 app.ReleaseDispatch();6. 修改一个excel单元格range=sheet.GetRange(COleVariant(IndexToString(row,col),COleVariant(IndexToString(row,col);range.SetValue2(COleVariant(value);7. 取出一个excel单元格实现Variant数据类型转换为CString类,这个只是一个示例,转换较为简单。COleVariant rValue;rValue=COleVariant(range.GetValue2();rV

9、alue.ChangeType(VT_BSTR);return CString(rValue.bstrVal);8. 还有释放问题是最重要的问题: 首先变量必须全释放,无论当初是否绑定过; 其次,程序释放和程序关闭的顺序必须是如果顺如颠倒如下:出现的后果是程序关闭后,excel进程仍然运行,所以无法正常打开程序曾经打开excel表格。附录(操作类源码):./Stdafx.hOptExcel.hcomdef.hRange cell;/Function: COptExcel/Description: 初始化函数,初始化中附加excel应用程序/Call: app.CreateDispatch(_T

10、()COptExcel:COptExcel(void) if (:CoInitialize( NULL ) = E_INVALIDARG) AfxMessageBox(_T(初始化Com失败! return; /验证office文件是否可以正确运行 if( !app.CreateDispatch(_T() ) /在程序执行文件路径名中,剪掉执行文件名,得到程序路径,追加模板文件名,得到模板完整路径 COptExcel 析构函数,释放对象,非常重要,不全部释放,占用内存,下/ 一次使用此类时会中断 ReleaseDispatch()COptExcel(void) books.ReleaseDis

11、patch(); book.ReleaseDispatch(); sheets.ReleaseDispatch(); sheet.ReleaseDispatch(); range.ReleaseDispatch(); font.ReleaseDispatch(); cell.ReleaseDispatch(); app.Quit(); app.ReleaseDispatch(); :CoUninitialize(); OpenExcelBook 打开表名为filename的文件,注意,文件路径非自动生成,以后/ 考虑从下处理方法 GetAppPath()/Input: CString file

12、name 文件名bool COptExcel:OpenExcelBook(CString filename) CFileFind filefind;filefind.FindFile(filename) ) 文件不存在 return false; LPDISPATCH lpDisp; /接口指针 books=app.GetWorkbooks(); lpDisp = books.Open(filename, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional ); /与office 2000的不

13、同,是个参数的,直接在后面加了两个covOptional成功了 book.AttachDispatch(lpDisp); sheets=book.GetSheets(); sheet=sheets.GetItem(COleVariant(short)1); /与的不同,是个参数的,直接在后面加了两个covOptional成功了 return true;void COptExcel:NewExcelBook() book=books.Add(covOptional); OpenExcelApp 打开应用程序(要注意以后如何识别用户要打开的是哪个文件)OpenExcelApp(void) app.

14、SetVisible(TRUE); app.SetUserControl(TRUE); SaveExcel 用于打开数据文件,续存数据后直接保存SaveExcel(void) book.SetSaved(TRUE); SaveAsExcel 保存excel文件SaveAsExcel(CString filename) book.SaveAs(COleVariant(filename),covOptional, covOptional,covOptional,(long)0,covOptional,covOptional,covOptional, covOptional,covOptional)

15、; SetCellValue 修改单元格内的值 IndexToString() 从(x,y)坐标形式转化为“A1”格式字符串 int row 单元格所在行/ int col 单元格所在列/ int Align 对齐方式默认为居中SetCellValue(int row, int col,int Align) range=sheet.GetRange(COleVariant(IndexToString(row,col),COleVariant(IndexToString(row,col); range.SetValue2(COleVariant(value); cell.AttachDispat

16、ch(range.GetItem (COleVariant(long(1), COleVariant(long(1).pdispVal); cell.SetHorizontalAlignment(COleVariant(short)Align); GetCellValue 得到的单元格中的值/Return: CString 单元格中的值CString COptExcel:GetCellValue(int row, int col) COleVariant rValue; rValue=COleVariant(range.GetValue2(); rValue.ChangeType(VT_BSTR); return CString(rValue.bstrVal); SetRowHeight 设置行高SetRowHeight(int row, CString height) int col = 1; range.SetRowHeight(COleVariant(height); SetColumnWidth 设置列宽 int col 要设置列宽的列/ CString 宽值SetColumnWidth(int col,CString width) int row = 1; range.SetColumnWidth(COleVariant(width);/Call

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2