加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VC6.0 读写WORD文档

(2011-07-01 20:12:13)
标签:

automation

com

it

分类: VC

    1.实现技巧

    写Word文档,首先要从Word应用程序获取文档的类的对象,然后设置文档中接收文字位置,最后将文字写入Word文档。

    注:Microsoft Office 2003类型库msword.olb常用的_Application,_Document,Documents,Selection四个类

     

    按照添加类的步骤,将_Application应用程序类和Documents类和Selection类加进应用程序

    在View菜单中,点击ClassWizard,然后进入Automation标签中点击Add Class,选择From A Type Library。找到Microsoft Office 2003类型库msword.olb,选择_Application,_Document,_Documents,Selection四个类,如有其他需要(例如画表也可选择其他的类)。

    http://www.vckbase.com/document/journal/vckbase33/images/WordAutoImag2.gif读写WORD文档" TITLE="VC6.0 读写WORD文档" />

    Documents类是文档对象集类,是所有Document对象的集合。使用Documents对象集合的Add方法可以新建一篇空白文档并将返回的Document 对象添至Documents对象集合之中。

    Add方法的原型声明如下:

    LPDISPATCH  Add(
    VARIANT* Template,
    VARIANT* NewTemplate,
    VARIANT* DocumentType,
    VARIANT* Visible)

    参数Template,指定新文档使用的模板名,如果忽略此参数则使用Normal模板。
     
    参数NewTemplate,如果此属性设置为 True 则将文档作为模板打开。默认值为 False。
     
    参数DocumentType其值可取下列 WdNewDocumentType常量之一。
     
    WdNewBlankDocument 创建一个空白文档,默认值。
     
    WdNewEmailMessage 新建一个电子邮件信息。
     
    wdNewWebPage 新建一个Web页。
     
    参数Visible,如果此参数为True,Microsoft Word将在可见窗口打开文档。如果此参数为False,Word仍会打开此文档但文档窗口的Visible属性变为False,默认值为True。

     

    Selection类对象用于选定文档的文字,然后对选定部分进行操作,如设置文字的格式或键入文字。Selection 对象代表窗体中的选定内容,每个窗体中只能有一个Selection 对象而且只能激活一个 Selection 对象。Selection 对象代表的选定内容既可以是文档中的一个区域也可以仅仅是一个插入点。通过Selection对象的TypeText和GetText可对Word文档进行读写操作

    TypeText的函数作用为写Word文档,其函数的声明如下:

    void TypeText(LPCTSTR Text);
    
    GetText的函数的作用是读文档,其函数的声明如下:
     CString GetText();
    
     
     

    2.实例代码

    本实例演示了如何读写Word文档。

    创建一个基于对话框的工程ReadWriteWord。通过上面的方法引入类型库,增加_Application类、Documents类、Selection类。在对话框上添加两个文本控件,两个按钮。文本控件分别用于输入和接收文本。

    在CreadWriteWord中的InitInstance初始化COM库添加代码如下:

    HRESULT hr;
    hr = AfxOleInit( );
    if(FAILED(hr))
    {
    AfxMessageBox("初始化COM失败");
    return FALSE;
    }
    在ReadWriteWordDlg.h中包含头文件:
    #include "msword.h"
    #include "atlbase.h"
    在stdafx.h中声明自定义消息标识
    #define WM_SEND WM_USER+1
    
    声明3个_Application、Documents、Selection的对象,参考代码如下:
    //Attribute
    _Application m_App;         //Word应用程序对象
    Documents m_Doc;          //Word文档对象
    Selection m_Slection;        //文档选择对象
    声明一个CEdit类的派生类CMyEdit,在 CMyEdit中响应WM_CHAR消息,代码如下:
    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    GetParent()->PostMessage(WM_SEND,(WPARAM)nChar,0); //向父窗口发送字符。
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    在ReadWriteWordDlgl类的OnInitDialog函数中实例化Word应用程序,新建Word文档,参考代码如下:
    BOOL CReadWriteWordDlg::OnInitDialog( )
    {
    /

    void CReadWriteWordDlg::SendMsgToWord(WPARAM wParam,LPARAM lParam)
    {
    CString strTmp = "";
    UINT  nChar = wParam;
    strTmp.Format("%c",wParam);
    m_Slection=m_App.GetSelection();
    m_Slection.TypeText(strTmp);
    }
    写Word按钮的响应参考代码如下:
    void CReadWriteWordDlg::OnWriteBtn() 
    {
    m_Slection=m_App.GetSelection();//Word文档光标输入点
    }
    读Word按钮的响应参考代码如下:
     

    void CReadWriteWordDlg::OnReadBtn()
    {
     m_Slection.GetSections();    //获取光标点
    m_Slection.WholeStory();    //对当前文档全选
    SetDlgItemText(IDC_READ_ED,m_Slection.GetText());
    }
    释放对象的参考代码如下:


    void CReadWriteWordDlg::OnDestroy()
    {
    CDialog::OnDestroy();
    m_Slection.ReleaseDispatch();   //释放selection对象
    m_Doc.ReleaseDispatch();    //释放Document对象
    CComVariant SaveChanges(false),OriginalFormat,RouteDocument;
    m_App.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
    m_App.ReleaseDispatch();    //释放应用程序类对象。
    }
    程序的运行效果如图12-24所示。
    http://new.51cto.com/files/uploadimg/20080613/134056867.jpg读写WORD文档" /> 
    图12-24  读/写Word

    0

    阅读 收藏 喜欢 打印举报/Report
    后一篇:TCP的流量控制
      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

    新浪公司 版权所有