一步一步教你如何通过MFC操作excelWord文档下载推荐.docx
- 文档编号:19464389
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:7
- 大小:17.48KB
一步一步教你如何通过MFC操作excelWord文档下载推荐.docx
《一步一步教你如何通过MFC操作excelWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《一步一步教你如何通过MFC操作excelWord文档下载推荐.docx(7页珍藏版)》请在冰豆网上搜索。
→在My***App:
:
InitInstance,()加入如下代码:
if(!
AfxOleInit()){
AfxMessageBox("
初始化Ole出错!
"
);
returnFALSE;
},效果如图:
注意excel保存时需要添加“comdef.h”头文件。
到此为止,excel在MFC中的配置环境已完成。
接下来添加一个按键,用
于保存成excel文档,按键对应的程序如下:
在对应(需要操作excel的)的CPP文件前加#include"
comdef.h"
_ApplicationExcelApp
Workbooksworkbooks
_Workbookworkbook
Worksheetssheets
_Worksheetsheet
Rangerange
if(!
ExcelApp.CreateDispatch("
Excel.Application"
NULL))
{
创建Excel服务失败!
)
}
//创建Excel2000服务器(启动Excel)
ExcelApp.SetVisible(false)
workbooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
//用来锁定对
应的工作簿
workbook.AttachDispatch(workbooks.Add(COleVariant((_bstr_t)CString().
AllocSysString())));
//得到Worksheets
sheets.AttachDispatch(workbook.GetWorksheets(),true);
sheet.AttachDispatch(sheets.GetItem(_variant_t("
Sheet1"
)),true);
//得到全部Cells,此时,range是cells的集合.
range.AttachDispatch(sheet.GetCells(),true);
//设置1行2列的单元的值
range.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("
ThisIsA
ExcelTestProgram!
));
TCHARszPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,szPath);
CStringstrPath(szPath);
strPath+=_T("
\\test.xlsx"
sheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
ExcelApp.SetVisible(true);
ExcelApp.ReleaseDispatch();
workbooks.ReleaseDispatch();
workbook.ReleaseDispatch();
sheets.ReleaseDispatch()
sheet.ReleaseDispatch()
Excel的数据读取:
运用在MSDN中的示例函数(具体函数见excel文档创建示例4):
根据顺序,依次从系统中获取app、books、book、sheets、sheet、range、
对象,然后获取路径strpath。
即可打开已有的excel文档。
通过定义
variant格式的数据对象,得到range(单元格)的数据,再存储到
COleSafeArray类型的对象之中,然后进行相关的处理,再显示到编辑
框之中。
在编辑过程中,出现并解决了如下几个问题:
1)Getvalue()(即从单元格中获取值的函数)在excel2000以及之
前的库中没有参数,但是在excel2003即以后的库中有了参数,本
例使用的事office2000,所以,当我用Getvalue()时出现编辑错
误,用Gettext()同样出错,而Getvalue2()的参数情况却没有
改变,只是它的返回值是二维数组。
2)Range.open()函数在msdn的示例中带有13个参数(一个路径,
12个VOptional,)但在实践中却是15个参数(一个路径参数,14
个VOptional)。
否则编译出错。
3)程序中,Trace的作用是便于观看程序运行情况,可以通过调试->
停止调试,然后查看VCIDE窗口(程序运行报错窗口),则可看见
Trace内容。
4)Debugview软件是一个专门的调试软件,可以捕获程序中由
TRACE(debug版本)和OutputDebugString输出的信息。
同样可以用
于查看本示例中的Trace内容。
5)程序如下(本程序是接在excel存数之后的,所以,添加excel类
的操作在这里不赘述。
//OLEVariantforOptional.
COleVariantVOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
_ApplicationobjApp;
_WorkbookobjBook;
WorkbooksobjBooks;
WorkSheetsobjSheets;
_WorksheetobjSheet;
RangeobjRange;
VARIANTret;
GetCurrentDirectory(MAX_PATH,szPath);
//InstantiateExcelandopenanexistingworkbook.
objApp.CreateDispatch("
objBooks=objApp.GetWorkbooks();
objBook=objBooks.Open(strPath,
VOptional,VOptional,VOptional,VOptional,
VOptional,VOptional,VOptional,VOptional
VOptional,VOptional
objSheets=objBook.GetWorksheets();
objSheet=objSheets.GetItem(COleVariant((short)1));
//Gettherangeobjectforwhichyouwishtoretrievethe
//dataandthenretrievethedata(asavariantarray,ret).
objRange=objSheet.GetRange(COleVariant("
A1"
),COleVariant("
A2"
//objRange.AttachDispatch(objRange.GetItem
(COleVariant((long)2),COleVariant((long)2)).pdispVal);
//ret=objRange.GetText();
//ret=objRange.GetValue2();
ret=objRange.GetValue2();
CStringstr;
//CreatetheSAFEARRAYfromtheVARIANTret.
COleSafeArraysa(ret);
//Determinethearray'
sdimensions.
longlNumRows;
longlNumCols;
sa.GetUBound(1,&
lNumRows);
sa.GetUBound(2,&
lNumCols);
//DisplaytheelementsintheSAFEARRAY.
longindex[2];
VARIANTval;
intr,c;
TRACE("
ContentsofSafeArray\n"
=====================\n\t"
for(c=1;
c<
=lNumCols;
c++)
\t\tCol%d"
c);
\n"
for(r=1;
r<
=lNumRows;
r++)
Row%d"
r);
index[0]=r;
index[1]=c;
sa.GetElement(index,&
val);
switch(val.vt)
caseVT_R8:
\t\t%1.2f"
val.dblVal);
str.Format("
%f"
val.dblVal);
break;
caseVT_BSTR:
\t\t%s"
(CString)val.bstrVal);
str=val.bstrVal;
caseVT_EMPTY:
\t\t<
empty>
str="
;
m_edit1=str;
//Closetheworkbookwithoutsavingchanges
//andquitMicrosoftExcel.
objBook.Close(COleVariant((short)FALSE),VOptional,VOptional);
objApp.Quit();
UpdateData(FALSE);
注解:
读取程序本人操作是将excel中的信息读取出来显示到一个
编辑框中。
读取程序能对应读出来。
亲测。
具体语句望能XX详
解之。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步一步 如何 通过 MFC 操作 excel