第一范文网 - 专业文章范例文档资料分享平台

VC++ 中操作EXCEL总结(转)

来源:用户分享 时间:2020-06-28 本文由夳酷拒拜托 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

VC++ 中操作EXCEL总结(转) 1、MSDN 上的代码,很好的例子

#include \

// OLE Variant for Optional.

COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

_Application objApp; _Workbook objBook; Workbooks objBooks; Worksheets objSheets; _Worksheet objSheet; Range objRange; VARIANT ret;

// Instantiate Excel and open an existing workbook. objApp.CreateDispatch(\ objBooks = objApp.GetWorkbooks(); objBook = objBooks.Open(\ VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional); objSheets = objBook.GetWorksheets();

objSheet = objSheets.GetItem(COleVariant((short)1));

//Get the range object for which you wish to retrieve the //data and then retrieve the data (as a variant array, ret).

objRange = objSheet.GetRange(COleVariant(\ ret = objRange.GetValue();

//Create the SAFEARRAY from the VARIANT ret. COleSafeArray sa(ret);

//Determine the array's dimensions. long lNumRows; long lNumCols;

sa.GetUBound(1, &lNumRows); sa.GetUBound(2, &lNumCols);

//Display the elements in the SAFEARRAY. long index[2]; VARIANT val;

int r, c;

TRACE(\ TRACE(\ for(c=1;c<=lNumCols;c++) {

TRACE(\ }

TRACE(\

for(r=1;r<=lNumRows;r++) {

TRACE(\ for(c=1;c<=lNumCols;c++) {

index[0]=r; index[1]=c;

sa.GetElement(index, &val); switch(val.vt) {

case VT_R8: {

TRACE(\ break; }

case VT_BSTR: {

TRACE(\ break; }

case VT_EMPTY: {

TRACE(\ break; } } }

TRACE(\ }

//Close the workbook without saving changes //and quit Microsoft Excel.

objBook.Close(COleVariant((short)FALSE), VOptional, VOptional); objApp.Quit(); 2、不错的一篇文章

在VC中彻底玩转Excel

作者:龚敏 来源:子玉山庄 更新:10/8/2004

如今Excel是越来越重要了,在我们自己开发的程序中不免要和Excel打交道了。利用Automation技术,我们可以在不去了解

数据库的情况下玩转Excel,而且你会发现一切竟如此轻松!

好了,咱们开始吧,我不喜欢用长篇累牍的代码来故弄玄虚,所以下面的代码都是切中要害的片段,总体上是个连贯的过程,

包括启动Excel,读取数据,写入数据,以及最后的关闭Excel,其中还包括了很多人感兴趣的合并单元格的处理。 特别说明以下代码需要MFC的支持,而且工程中还要包含EXCEL2000的定义文件:EXCEL9.H,EXCEL9.CPP

***************************************************************************************************************** //***** //变量定义 _Application app; Workbooks books; _Workbook book; Worksheets sheets; _Worksheet sheet; Range range; Range iCell;

LPDISPATCH lpDisp; COleVariant vResult; COleVariant

covTrue((short)TRUE), covFalse((short)FALSE),

covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //*****

//初始化COM的动态连接库 if(!AfxOleInit()) {

AfxMessageBox(\无法初始化COM的动态连接库!\ return ; } //*****

//创建Excel 2000服务器(启动Excel) if(!app.CreateDispatch(\

{

AfxMessageBox(\无法启动Excel服务器!\ return; }

app.SetVisible(TRUE); //使Excel可见

app.SetUserControl(TRUE); //允许其它用户控制Excel //***** //打开c:\\\\1.xls

books.AttachDispatch(app.GetWorkbooks()); lpDisp = books.Open(\

covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional ); //*****

//得到Workbook

book.AttachDispatch(lpDisp); //*****

//得到Worksheets

sheets.AttachDispatch(book.GetWorksheets());

#include \ //*****

//得到当前活跃sheet

//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待 lpDisp=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.GetCount(); //已经使用的列数

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(); CString str;

if(vResult.vt == VT_BSTR) //字符串 {

str=vResult.bstrVal; }

else if (vResult.vt==VT_R8) //8字节的数字 {

str.Format(\ }

else if(vResult.vt==VT_DATE) //时间格式 {

SYSTEMTIME st;

VariantTimeToSystemTime(&vResult.date, &st); }

else if(vResult.vt==VT_EMPTY) //单元格空的 { str=\ } //*****

//读取第一个单元格的对齐方式,数据类型:VT_I4 //读取水平对齐方式

range.AttachDispatch(sheet.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) {

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新初中教育VC++ 中操作EXCEL总结(转) 全文阅读和word下载服务。

VC++ 中操作EXCEL总结(转) .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1106208.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top