如今excel是越来越重要了,在我们自己开发的程序中不免要

上传人:艾力 文档编号:36402031 上传时间:2018-03-28 格式:DOC 页数:5 大小:28KB
返回 下载 相关 举报
如今excel是越来越重要了,在我们自己开发的程序中不免要_第1页
第1页 / 共5页
如今excel是越来越重要了,在我们自己开发的程序中不免要_第2页
第2页 / 共5页
如今excel是越来越重要了,在我们自己开发的程序中不免要_第3页
第3页 / 共5页
如今excel是越来越重要了,在我们自己开发的程序中不免要_第4页
第4页 / 共5页
如今excel是越来越重要了,在我们自己开发的程序中不免要_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《如今excel是越来越重要了,在我们自己开发的程序中不免要》由会员分享,可在线阅读,更多相关《如今excel是越来越重要了,在我们自己开发的程序中不免要(5页珍藏版)》请在金锄头文库上搜索。

1、如今 Excel 是越来越重要了,在我们自己开发的程序中不免要和 Excel 打交道了。利用 Automation 技术,我们可以在不去了解 数据库的情况下玩转 Excel,而且你会发现一切竟如此轻松!好了,咱们开始吧,我不喜欢用长篇累牍的代码来故弄玄虚,所以下面的代码都是切中 要害的片段,总体上是个连贯的过程, 包括启动 Excel,读取数据,写入数据,以及最后的关闭 Excel,其中还包括了很多人感兴 趣的合并单元格的处理。特别说明以下代码需要 MFC 的支持,而且工程中还要包含 EXCEL2000 的定义文件: EXCEL9.H,EXCEL9.CPP* */*/变量定义_Applicat

2、ion app; Workbooks books;_Workbook book;Worksheets sheets;_Worksheet sheet;Range range;Range iCell;LPDISPATCH lpDisp; COleVariant vResult;COleVariantcovTrue(short)TRUE),covFalse(short)FALSE),covOptional(long)DISP_E_PARAMNOTFOUND, VT_ERROR); /*/初始化 COM 的动态连接库if(!AfxOleInit() AfxMessageBox(“无法初始化 COM

3、的动态连接库!“);return ; /*/创建 Excel 2000 服务器(启动 Excel)if(!app.CreateDispatch(“Excel.Application“) AfxMessageBox(“无法启动 Excel 服务器!“);return;app.SetVisible(TRUE); /使 Excel 可见app.SetUserControl(TRUE); /允许其它用户控制 Excel/* /打开 c:1.xlsbooks.AttachDispatch(app.GetWorkbooks();lpDisp = books.Open(“C:1.xls“, covOptio

4、nal, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional ); /*/得到 Workbookbook.AttachDispatch(lpDisp);/*/得到 Worksheets sheets.AttachDispatch(book.GetWorksheets(); /*/得到当前活跃 sheet/如果有单元格正处于编辑状态中,此操作不能返回,会一直等待lpDis

5、p=book.GetActiveSheet();sheet.AttachDispatch(lpDisp); /*/读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列Range usedRange;usedRange.AttachDispatch(sheet.GetUsedRange();range.AttachDispatch(usedRange.GetRows();long iRowNum=range.GetCount(); /已经使用的行数range.AttachDispatch(usedRange.GetColumns();long iColNum=range.GetCou

6、nt(); /已经使用的列数long iStartRow=usedRange.GetRow(); /已使用区域的起始行,从 1 开始long iStartCol=usedRange.GetColumn(); /已使用区域的起始列,从 1 开始/*/读取第一个单元格的值range.AttachDispatch(sheet.GetCells(); range.AttachDispatch(range.GetItem (COleVariant(long)1),COleVariant(long)1).pdispVal );COleVariant vResult =range.GetValue();CS

7、tring 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;VariantTimeToSystemTime(else if(vResult.vt=VT_EMPTY) /单元格空的str=“; /*/读取第一个单元格的对齐方式,数据类型:VT_I4/读取水平对齐方式range.AttachDispatch(she

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

9、atch(range.GetItem (COleVariant(long(1), COleVariant(long(1).pdispVal);vResult.lVal=0;vResult=iCell.GetVerticalAlignment();if(vResult.lVal!=0)switch (vResult.lVal)case -4160 : /靠上break;case -4108 : /居中break;case -4107 : /靠下break;/*/设置第一个单元格的值“HI,EXCEL!“range.SetItem(COleVariant(1),COleVariant(1),COl

10、eVariant(“HI,EXCEL!“); /*/设置第一个单元格字体颜色:红色Font font;range.AttachDispatch(sheet.GetCells();range.AttachDispatch(range.GetItem (COleVariant(long(1), COleVariant(long(1).pdispVal);font.SetColor(COleVariant(long)0xFF0000); /*/合并单元格的处理/包括判断第一个单元格是否为合并单元格,以及将第一个单元格进行合并Range unionRange;range.AttachDispatch(

11、sheet.GetCells(); unionRange.AttachDispatch(range.GetItem (COleVariant(long)1),COleVariant(long)1).pdispV al );vResult=unionRange.GetMergeCells(); if(vResult.boolVal=-1) /是合并的单元格 /合并单元格的行数 range.AttachDispatch (unionRange.GetRows ();long iUnionRowNum=range.GetCount (); /合并单元格的列数range.AttachDispatch

12、(unionRange.GetColumns ();long iUnionColumnNum=range.GetCount (); /合并区域的起始行,列long iUnionStartRow=unionRange.GetRow(); /起始行,从 1 开始long iUnionStartCol=unionRange.GetColumn(); /起始列,从 1 开始else if(vResult.boolVal=0) /不是合并的单元格/将第一个单元格合并成 2 行,3 列range.AttachDispatch(sheet.GetCells(); unionRange.AttachDispa

13、tch(range.GetItem (COleVariant(long)1),COleVariant(long)1).pdispV al );unionRange.AttachDispatch(unionRange.GetResize(COleVariant(long)2),COleVariant(long)3);unionRange.Merge(COleVariant(long)0); /合并单元格/*/将文件保存为 2.xls book.SaveAs(COleVariant(“C:2.xls“),covOptional,covOptional, covOptional,covOptional,covOptional,0,covOptional,covOptional,covOptional,covOptional); /*/关闭所有的 book,退出 Excel book.Close (covOptional,COleVariant(OutFilename),covOptional);books.Close(); app.Quit();

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

当前位置:首页 > 行业资料 > 其它行业文档

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