在VC中彻底玩转Excel文档格式.docx
- 文档编号:13356139
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:26
- 大小:26.38KB
在VC中彻底玩转Excel文档格式.docx
《在VC中彻底玩转Excel文档格式.docx》由会员分享,可在线阅读,更多相关《在VC中彻底玩转Excel文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
祴数氠扩慲祲尮,然后再选你需要的objectlibrary。
(forthisexample,ifyouareautomatingExcel97,choosetheMicrosoftExcel8.0
ObjectLibrary;
thedefaultlocationisC:
\ProgramFiles\Microsoft
Office\Office\Excel8.olb).
IfyouareautomatingMicrosoftExcel2000,chooseMicrosoftExcel9.0Object
LibraryforwhichthedefaultlocationistheC:
Office\Office\Excel9.olb.
IfyouareautomatingMicrosoftExcel2002andMicrosoftOfficeExcel2003,the
objectlibraryisembeddedinthefileExcel.exe.ThedefaultlocationforExcel.exein
Office2002isC:
\programFiles\MicrosoftOffice\Office10\Excel.exe.Thedefault
locationforExcel.exeinOffice2003isC:
\program
Files\MicrosoftOffice\Office11\Excel.exe.
1/31
在ListCtrl框中选中_Application,_Workbook,_Worksheet,Range,Sheets,
Workbooks,单击OK,自动生成EXCEL8.H和EXCEL8.CPP文件(或者EXCEL9.H和EXCEL9.CPP或者EXCEL.H和EXCEL.CPP)。
3.初始化COM库:
在App类的InitInstance中一定要先加上AfxOleInit();
因为操作Excel是属于COM自动化,需初始化COM库。
4.加入Excel的头文件:
文档类的CPP文件中包含头文件椣据畬敤尠硥散?
栮,是关于Excel中各类的接口定义信息。
如果excel9.h,excel9.cpp文件已经生成
创建project,将示例文档中的excel9.h,excel9.cpp
复制到工程目录,选
Project-->
Addtoproject-->
File-->
excel9.h;
excel9.cpp;
在App的Initinstance中加入AfxOleInit();
在Dlg的头文件中加入#includeexcel9.h
代码中加入调用COM接口代码,编译即可,
*****************************************************************************************************************
//*****
//变量定义
_Applicationapp;
Workbooksbooks;
2/31
_Workbookbook;
Worksheetssheets;
_Worksheetsheet;
Rangerange;
RangeiCell;
LPDISPATCHlpDisp;
COleVariantvResult;
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
//初始化COM的动态连接库
if(!
AfxOleInit())
{
晁?
獥慳敧潂?
无法初始化COM的动态连接库!
);
return;
}
//创建Excel2000服务器(启动Excel)
app.CreateDispatch(Excel.Application))
3/31
无法启动Excel服务器!
return;
app.SetVisible(TRUE);
//使Excel可见
app.SetUserControl(TRUE);
//允许其它用户控制Excel
//打开c:
\\1.xls
books.AttachDispatch(app.GetWorkbooks());
lpDisp=books.Open(C:
\\\\1.xls,
covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional);
//得到Workbook
book.AttachDispatch(lpDisp);
//得到Worksheets
sheets.AttachDispatch(book.GetWorksheets());
//得到当前活跃sheet
4/31
//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待
lpDisp=book.GetActiveSheet();
sheet.AttachDispatch(lpDisp);
//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
RangeusedRange;
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
longiRowNum=range.GetCount();
//已经使用的行数
range.AttachDispatch(usedRange.GetColumns());
longiColNum=range.GetCount();
//已经使用的列数
longiStartRow=usedRange.GetRow();
//已使用区域的起始行,从1开始long
iStartCol=usedRange.GetColumn();
//已使用区域的起始列,从1开始//*****
//读取第一个单元格的值
range.AttachDispatch(sheet.GetCells());
range.AttachDispatch(range.GetItem
(COleVariant((long)1),COleVariant((long)1)).pdispVal);
COleVariantvResult
=range.GetValue();
CStringstr;
if(vResult.vt==VT_BSTR)//字符串
str=vResult.bstrVal;
5/31
elseif(vResult.vt==VT_R8)//8字节的数字
str.Format(%f,vResult.dblVal);
elseif(vResult.vt==VT_DATE)//时间格式
SYSTEMTIMEst;
VariantTimeToSystemTime(&
vResult.date,&
st);
elseif(vResult.vt==VT_EMPTY)//单元格空的
str=\;
//读取第一个单元格的对齐方式,数据类型:
VT_I4
//读取水平对齐方式
iCell.AttachDispatch((range.GetItem(COleVariant(long
(1)),
COleVariant(long
(1)))).pdispVal);
vResult.lVal=0;
vResult=iCell.GetHorizontalAlignment();
if(vResult.lVal!
=0)
6/31
switch(vResult.lVal)
case1:
//默认
break;
case-4108:
//居中
case-4131:
//靠左
case-4152:
//靠右
//垂直对齐方式
vResult=iCell.GetVerticalAlignment();
case-4160:
//靠上
7/31
case-4108:
case-4107:
//靠下
//设置第一个单元格的值HI,EXCEL!
range.SetItem(COleVariant
(1),COleVariant
(1),COleVariant(HI,EXCEL!
));
//设置第一个单元格字体颜色:
红色
Fo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 彻底 Excel