MFC操作WordWord格式.docx
《MFC操作WordWord格式.docx》由会员分享,可在线阅读,更多相关《MFC操作WordWord格式.docx(16页珍藏版)》请在冰豆网上搜索。
因为我在开发的时候遇到了很多问题,并且网上的资料很少,基本都是最基本的操作。
所以帖出来,希望能让大家在开发的过程少走些弯路!
工具:
。
关键字:
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
#include"
msword.h"
#definewdCharacter1
#definewdLine5
#definewdCell12
#definewdExtend1
#definewdMove0
usingnamespacemyword;
atlbase.h"
classCWordOperate
{
public:
CWordOperate();
virtual~CWordOperate();
private:
_Applicationm_wdApp;
Documentsm_wdDocs;
_Documentm_wdDoc;
Selectionm_wdSel;
Rangem_wdRange;
//操作
//**********************创建新文档*******************************************
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.cpp
CWordOperate:
:
CWordOperate()
}
~CWordOperate()
//操作
BOOLCWordOperate:
CreateApp()
COleExceptionpe;
m_wdApp.CreateDispatch(_T("
Word.Application"
),&
pe))
Application创建失败,请确保安装了word2000或以上版本!
MB_OK|MB_ICONWARNING);
pe.ReportError();
throw&
pe;
returnTRUE;
CreateDocuments()
if(FALSE==CreateApp())
m_wdDocs.AttachDispatch(m_wdApp.GetDocuments());
m_wdDocs.m_lpDispatch)
Documents创建失败!
CreateDocument()
Documents为空!
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();
m_wdDoc.m_lpDispatch)
Document获取失败!
//得到selection变量
m_wdSel=m_wdApp.GetSelection();
m_wdSel.m_lpDispatch)
Select获取失败!
//得到Range变量
m_wdRange=m_wdDoc.Range(vOptional,vOptional);
if(!
m_wdRange.m_lpDispatch)