VC操作EXCEL的方法.doc

上传人:自*** 文档编号:126258080 上传时间:2020-03-23 格式:DOC 页数:35 大小:307.50KB
返回 下载 相关 举报
VC操作EXCEL的方法.doc_第1页
第1页 / 共35页
VC操作EXCEL的方法.doc_第2页
第2页 / 共35页
VC操作EXCEL的方法.doc_第3页
第3页 / 共35页
VC操作EXCEL的方法.doc_第4页
第4页 / 共35页
VC操作EXCEL的方法.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《VC操作EXCEL的方法.doc》由会员分享,可在线阅读,更多相关《VC操作EXCEL的方法.doc(35页珍藏版)》请在金锄头文库上搜索。

1、VC+操作EXCEL的方法 2007年12月27日 星期四 下午 04:53Workbooks wbsMyBooks; _Workbook wbMyBook;Worksheets wssMysheets; _Worksheet wssMysheet;Range range; Range iCell;LPDISPATCH lpDisp;COleVariant vResult;COleVariant covTrue(short)TRUE), covFalse(short)FALSE), covOptional(long)DISP_E_PARAMNOTFOUND, VT_ERROR); /创建Exc

2、el 2000服务器(启动Excel),尽量在初始化中建立excel_app对象 /以确保一次只打开一个excel服务器/ if(!m_ExcelApp.CreateDispatch(Excel.Application) / / AfxMessageBox(无法启动Excel服务器!);/ return;/ /app.SetVisible(TRUE); /使Excel可见 /ExcelApp.SetUserControl(TRUE); /允许其它用户控制Excel /打开c:*.xls wbsMyBooks.AttachDispatch(m_ExcelApp.GetWorkbooks(); l

3、pDisp = wbsMyBooks.Open(m_strPath,/此处无法打开文档没有问题 covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional); wbMyBook.AttachDispatch(lpDisp);/得到Workbook wssMysheets.AttachDispatch(wbMyBook.GetWorksheets()

4、;/得到Worksheets /得到当前活跃sheet,如果有单元格正处于编辑状态中,此操作不能返回,会一直等待 lpDisp = wbMyBook.GetActiveSheet(); wssMysheet.AttachDispatch(lpDisp); /读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列 Range usedRange; usedRange.AttachDispatch(wssMysheet.GetUsedRange(); range.AttachDispatch(usedRange.GetRows(); long iRowNum = range.GetCou

5、nt(); /已经使用的行数 range.AttachDispatch(usedRange.GetColumns(); long iColNum = range.GetCount(); /已经使用的列数 long iStartRow = usedRange.GetRow(); /已使用区域的起始行,从1开始 long iStartCol = usedRange.GetColumn(); /已使用区域的起始列,从1开始 /读取第iStartRow行,第iStartCol列单元格的值 range.AttachDispatch(wssMysheet.GetCells(); range.AttachD

6、ispatch(range.GetItem(COleVariant(iStartRow),COleVariant(iStartCol).pdispVal); vResult = range.GetValue(); CString str; if(vResult.vt = VT_BSTR) /字符串 str = vResult.bstrVal; else if (vResult.vt = VT_R8) /8字节的数字 str.Format(%f, vResult.dblVal); else if(vResult.vt = VT_DATE) /时间格式 SYSTEMTIME st; Variant

7、TimeToSystemTime(vResult.date, &st); else if(vResult.vt = VT_EMPTY) /单元格空的 str = ; /读取第一个单元格的对齐方式,数据类型:VT_I4,读取水平对齐方式 range.AttachDispatch(wssMysheet.GetCells(); iCell.AttachDispatch(range.GetItem (COleVariant(long(1), COleVariant(long(1).pdispVal); vResult.lVal = 0; vResult = iCell.GetHorizontalAli

8、gnment(); if(vResult.lVal != 0) switch (vResult.lVal) case 1: /默认 break; case -4108: /居中 break; case -4131 : /靠左 break; case -4152 : /靠右 break; /垂直对齐方式 iCell.AttachDispatch(range.GetItem (COleVariant(long(1), COleVariant(long(1).pdispVal); vResult.lVal = 0; vResult = iCell.GetVerticalAlignment(); if

9、(vResult.lVal!=0) switch (vResult.lVal) case -4160 : /靠上 break; case -4108 : /居中 break; case -4107 : /靠下 break; /设置第一个单元格的值HI,EXCEL! range.SetItem(COleVariant(long(1),COleVariant(long(1),COleVariant(HI,EXCEL!); /设置第一个单元格字体颜色:红色/ CFont font;/ range.AttachDispatch(wssMysheet.GetCells();/ range.AttachD

10、ispatch(range.GetItem (COleVariant(long(1), COleVariant(long(1).pdispVal);/ font(COleVariant(long)0xFF0000); /合并单元格的处理,包括判断第一个单元格是否为合并单元格,以及将第一个单元格进行合并 Range unionRange; range.AttachDispatch(wssMysheet.GetCells(); unionRange.AttachDispatch(range.GetItem (COleVariant(long)1),COleVariant(long)1).pdisp

11、Val ); vResult = unionRange.GetMergeCells(); if(vResult.boolVal = -1) /是合并的单元格 /合并单元格的行数 range.AttachDispatch(unionRange.GetRows(); long iUnionRowNum=range.GetCount(); /合并单元格的列数 range.AttachDispatch(unionRange.GetColumns(); long iUnionColumnNum=range.GetCount(); /合并区域的起始行,列 long iUnionStartRow=union

12、Range.GetRow(); /起始行,从1开始 long iUnionStartCol=unionRange.GetColumn(); /起始列,从1开始 else if(vResult.boolVal = 0) /不是合并的单元格,将第一个单元格合并成2行,3列 range.AttachDispatch(wssMysheet.GetCells(); unionRange.AttachDispatch(range.GetItem(COleVariant(long)1),COleVariant(long)1).pdispVal ); unionRange.AttachDispatch(unionRange.GetResize(COleVariant(long)2),COleVariant(long)3); unionRange.Merge(COleVariant(long)0); /合并单元格 /将文件保存为*.xls m_ExcelApp.SetVisible(TRUE); CString strtmp = m_strPath.Left(m_strPath.ReverseFind(.) + .xls;/这里应该确保strtmp为有效路径,否则的话该函数会自己处理异常,导致以后的语句没有执行,没有关

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号