MFC操作Word

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

【MFC/C++操作word】Word篇分类:MFC操作office2013-01-2521:304372人阅读评论(10)收藏举报MFC操作Word一.初始化操作最近根据项目需要,需要我去用vc++6.0作一个ActiveXweb组件。自己从来没有接触过这方面的编程,这次是头一遭!所以咱就做了,不过倒很出乎我的意料,比我想象的要快很多就完成了。现将vc++6.0操作word部分的关键代码部分帖出来,共享给大家。因为我在开发的时候遇到了很多问题,并且网上的资料很少,基本都是最基本的操作。所以帖出来,希望能让大家在开发的过程少走些弯路!工具:vc++6.0。关键字:c++,MFC。要求:系统安装MSOFFICE2000。过程:准备工作:1.创建一个MFC(EXE)工程:MFCAppWizard(exe),工程为对话框形式(测试用)。2.在CLASSVIEW页面创建一个类:类名为:CWordOffice,类的类型为:Classtype:GenericClass。3.在工具栏中找到view-classwizard-Automation-addclass-fromatyelibrary,然后选中offfice安装的目录中的MSWORD9.OLB,然后选中所有列出的类名,点OK完成。准备工作完成,下面贴出相关部分的代码:CWordOffice.h中的手动写入的代码如下(自动生成的没有加入):1.导入类库下面的操作基于Word2003点击查看-建立类向导-AddClass...\FromatypeLibrary...-C:\ProgramFiles\MicrosoftOffice\Office\MSWORD9.OLB,接下来就可以看到导入的类msword.h,msword.cpp。2.初始化COM找到App的InitInstance()函数,在其中添加AfxOleInit()函数的调用,如:if(!AfxOleInit()){AfxMessageBox(注册COM出错!);returnFALSE;}二.我自己写的Word操作类你写的时候可以直接使用这个类,在它的基础上修改一下。我参考自,对其进行了改编:WordOperate.h#includemsword.h#definewdCharacter1#definewdLine5#definewdCell12#definewdExtend1#definewdMove0usingnamespacemyword;#includeatlbase.hclassCWordOperate{public:CWordOperate();virtual~CWordOperate();private:_Applicationm_wdApp;Documentsm_wdDocs;_Documentm_wdDoc;Selectionm_wdSel;Rangem_wdRange;public://操作//**********************创建新文档*******************************************BOOLCreateApp();//创建一个新的WORD应用程序BOOLCreateDocuments();//创建一个新的Word文档集合BOOLCreateDocument();//创建一个新的Word文档BOOLCreate();//创建新的WORD应用程序并创建一个新的文档voidShowApp();//显示WORD文档voidHideApp();//隐藏word文档//**********************打开文档*********************************************BOOLOpenDocument(CStringfileName);//打开已经存在的文档。BOOLOpen(CStringfileName);//创建新的WORD应用程序并打开一个已经存在的文档。BOOLSetActiveDocument(shorti);//设置当前激活的文档。//**********************保存文档*********************************************BOOLSaveDocument();//文档是以打开形式,保存。BOOLSaveDocumentAs(CStringfileName);//文档以创建形式,保存。BOOLCloseDocument();voidCloseApp();//**********************文本书写操作*****************************************voidWriteText(CStringszText);//当前光标处写文本voidWriteNewLineText(CStringszText,intnLineCount=1);//换N行写字voidWriteEndLine(CStringszText);//文档结尾处写文本voidWholeStory();//全选文档内容voidCopy();//复制文本内容到剪贴板voidInsertFile(CStringfileName);//将本地的文件全部内容写入到当前文档的光标处。//----------------------addbyzxx--------------------------------------//***********************光标操作********************************************//上下按行选择voidSelectMoveDown(shortlineCount,shortunit);//有选择操作的移动voidNoneSelectMoveDown(shortlineCount,shortunit);//仅仅移动光标,不选中voidSelectMoveUp(shortlineCount,shortunit);//有选择操作的移动voidNoneSelectMoveUp(shortlineCount,shortunit);//仅仅移动光标,不选中//左右按列选择voidSelectMoveLeft(shortcharCount,shortunit);//有选择操作的移动voidNoneSelectMoveLeft(shortcharCount,shortunit);//voidSelectMoveRight(shortcharCount,shortunit);//有选择操作的移动voidNoneSelectMoveRight(shortcharCount,shortunit);//voidMoveToFirst();voidMoveToNextPage();voidTypeParagraph();voidPasteAndFormat();voidPaste();voidTypeBackspace(intcount);};WordOperate.cppCWordOperate::CWordOperate(){}CWordOperate::~CWordOperate(){}//操作BOOLCWordOperate::CreateApp(){COleExceptionpe;if(!m_wdApp.CreateDispatch(_T(Word.Application),&pe)){AfxMessageBox(Application创建失败,请确保安装了word2000或以上版本!,MB_OK|MB_ICONWARNING);pe.ReportError();throw&pe;returnFALSE;}returnTRUE;}BOOLCWordOperate::CreateDocuments(){if(FALSE==CreateApp()){returnFALSE;}m_wdDocs.AttachDispatch(m_wdApp.GetDocuments());if(!m_wdDocs.m_lpDispatch){AfxMessageBox(Documents创建失败!,MB_OK|MB_ICONWARNING);returnFALSE;}returnTRUE;}BOOLCWordOperate::CreateDocument(){if(!m_wdDocs.m_lpDispatch){AfxMessageBox(Documents为空!,MB_OK|MB_ICONWARNING);returnFALSE;}COleVariantvarTrue(short(1),VT_BOOL),vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);CComVariantTemplate(_T());//没有使用WORD的文档模板CComVariantNewTemplate(false),DocumentType(0),Visible;m_wdDocs.Add(&Template,&NewTemplate,&DocumentType,&Visible);//得到document变量m_wdDoc=m_wdApp.GetActiveDocument();if(!m_wdDoc.m_lpDispatch){AfxMessageBox(Document获取失败!,MB_OK|MB_ICONWARNING);returnFALSE;}//得到selection变量m_wdSel=m_wdApp.GetSelection();if(!m_wdSel.m_lpDispatch){AfxMessageBox(Select获取失败!,MB_OK|MB_ICONWARNING);returnFALSE;}//得到Range变量m_wdRange=m_wdDoc.Range(vOptional,vOptional);if(!m_wdRange.m_lpDispatch){AfxMessageBox(Range获取失败!,MB_OK|MB_ICONWARNING);returnFALSE;}returnTRUE;}BOOLCWordOperate::Create(){if(FALSE==CreateDocuments()){returnFALSE;}returnCreateDocument();}voidCWordOperate::ShowApp(){m_wdApp.SetVisible(TRUE);}voidCWordOperate::HideApp(){m_wdApp.SetVisible(FALSE);}BOOLCWordOperate::OpenDocument(CStringfileName){if(!m_wdDocs.m_lpDispatch){AfxMessageBox(Documents为空!,MB_OK|MB_ICONWARNING);returnFALSE;}COleVariantvTrue((short)TRUE),vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),vZ((short)0);COleVariantvFileName(_T(fileName));//得到document变量m_wdDoc.AttachDispatch(m_wdDocs.Open(vFileName,//FileNamevTrue,//ConfirmConversion.vFalse,//ReadOnly.vFalse,//AddToRecentFiles.vOptional,//PasswordDocument.vOptional,//PasswordTemplate.vOpti

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功