c++パッケージWord(比較的フル)

14724 ワード

   C++   (vc word     )

                 

       。



          ,       。。

               ,         ,         。。。。



    :

#ifndef CMYWORD_H

#define CMYWORD_H



#include "msword.h"

#include <ATLBASE.H>





//       

enum Alignment{wdAlignParagraphCenter=1,wdAlignParagraphRight,wdAlignParagraphJustify};



//  Word  

/*

wdFormatDocument     doc  

wdFormatWebArchiv       

wdFormatHTML      

wdFormatFilteredHTML               

wdFormatTemplate      

*/



enum SaveType{

    wdFormatDocument=0,

    wdFormatWebArchive=9,

    wdFormatHTML=8,

    wdFormatFilteredHTML=10,

    wdFormatTemplate=1

};



class CmyWord

{

    //      

public:

    _Application app;//  word

    Documents docs;//word    

    _Document doc;//  word  

    _Font font;//    

    Selection sel;//                   

    Table tab;//    

    Range range;

    



public:

    CmyWord();//    

    virtual ~CmyWord();//    



    void ShowApp(BOOL flag);

    void AppClose();

    BOOL InitCOM();// COM     

    BOOL CreateAPP();//    word  

    BOOL CreateDocument();//  word  

    BOOL Create();//    word   Word  

    



    BOOL Open(CString FileName,BOOL ReadOnly = FALSE,BOOL  AddToRecentFiles = FALSE);//    word  ;

    BOOL Close(BOOL SaveChange=FALSE);//    word  

    BOOL Save();//    

    BOOL SaveAs(CString FileName,int SaveType=0);//    



    //////////////////////////       /////////////////////////////////////////////



    void WriteText(CString Text);//    

    void NewLine(int nCount=1);//   N 

    void WriteTextNewLineText(CString Text,int nCount=1);//   N     



    //////////////////////////////////////////////////////////////////////////



    //////////////////////////    ////////////////////////////////////////



    void SetFont(CString FontName,int FontSize=9,long FontColor=0,long FontBackColor=0);

    void SetFont(BOOL Blod,BOOL Italic=FALSE,BOOL UnderLine=FALSE);

    void SetTableFont(int Row,int Column,CString FontName,int FontSize=9,long FontColor=0,long FontBackColor=0);



    //void SetTableFont();//            .



        /////////////////////////    /////////////////////////////////////



    void CreateTable(int Row,int Column);

    void WriteCellText(int Row,int Column,CString Text);



    /////////////////////////////      ///////////////////////////////////////



    void SetParaphformat(int Alignment);





    /////////////////////////////      ///////////////////////////////////////



    //            

    void FindWord(CString FindW,CString RelWord);



    //  Word      

    void GetWordText(CString &Text);



    //Word   

    void PrintWord();



};



#endif



    :

#include "StdAfx.h"

#include "CmyWord.h"





//   vOpt                   CComVariant vOpt;                 

//COleVariant vOpt(( long )DISP_E_PARAMNOTFOUND,  VT_ERROR);

//---------------------------------------------------------------------------------------------------------

//                           Word         2012 1,4  2:04

//

//1          Word        ,        ,           。          

//2        c++     ,    c++      。        QQ879801208     

//3                        。

//4                    。。。。

//---------------------------------------------------------------------------------------------------------

CmyWord::CmyWord()

{

    InitCOM();

}



CmyWord::~CmyWord()

{

    //                 。   c               

    // c+=                。

  CoUninitialize();

  font.ReleaseDispatch();

  range.ReleaseDispatch();

  tab.ReleaseDispatch();

  doc.ReleaseDispatch();

  docs.ReleaseDispatch();

  app.ReleaseDispatch();

  sel.ReleaseDispatch();

}



BOOL CmyWord::InitCOM()

{

    if(CoInitialize(NULL)!=S_OK)

    {

        AfxMessageBox("   com   ");

        return 0;

    }

    else

    {

        return TRUE;

    }

}



BOOL CmyWord::CreateAPP()

{

    if(!app.CreateDispatch("Word.Application"))

    {

        AfxMessageBox("     OFFICE");

        return FALSE;

    }

    else

    {

        app.SetVisible(TRUE);

        return TRUE;

    }

}



//         , Word        。

void CmyWord::ShowApp(BOOL flag)

{

    if(!app.m_lpDispatch)

    {

        AfxMessageBox("      Word  ");

        return;

    }

    else

    {

        app.SetVisible(flag);

    }

}

BOOL CmyWord::CreateDocument()

{

    if(!app.m_lpDispatch)

    {

        AfxMessageBox("Application  ,Documents    !", MB_OK|MB_ICONWARNING);

        return FALSE;

    }

    else

    {

        docs=app.GetDocuments();

        if(docs.m_lpDispatch==NULL)

        {

            AfxMessageBox("  DOCUMENTS   ");

            return FALSE;

        }

        else

        {

            CComVariant Template(_T(""));//        

            CComVariant NewTemplate(false);

            CComVariant DocumentType(0);

            CComVariant Visible;//        

            doc = docs.Add(&Template,&NewTemplate,&DocumentType,&Visible);

            if(!doc.m_lpDispatch)

            {

                AfxMessageBox("  word  ");

                return FALSE;

            }

            else

            {

                sel = app.GetSelection();//    Word  。      doc  selection。          Word    

                if(!sel.m_lpDispatch)

                {

                    AfxMessageBox("selection     ");

                    return FALSE;

                }

                else

                {

                    return TRUE;

                }

            }

        }

    }

}



BOOL CmyWord ::Create()

{

    if(CreateAPP())

    {

        if(CreateDocument())

        {

            return TRUE;

        }

        else

            return FALSE;

    }

    else

        return FALSE;

}



BOOL CmyWord::Open(CString FileName,BOOL ReadOnly /* = FALSE */,BOOL AddToRecentFiles /* = FALSE */)

{



    CComVariant Read(ReadOnly);

    CComVariant AddToR(AddToRecentFiles);

    CComVariant Name(FileName);



    COleVariant vTrue((short)TRUE), vFalse((short)FALSE);

    COleVariant varstrNull("");

    COleVariant varZero((short)0);

    COleVariant varTrue(short(1),VT_BOOL);

    COleVariant varFalse(short(0),VT_BOOL);

    COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);



    if(!app.m_lpDispatch)

    {

        if(CreateAPP()==FALSE)

        {

            return FALSE;

        }

    }

    if(!docs.m_lpDispatch)

    {

        docs=app.GetDocuments();

        if(!docs.m_lpDispatch)

        {

            AfxMessageBox("DocuMent       ");

            return FALSE;

        }

    }

    CComVariant format(0);//     0  doc     

    doc=docs.Open(&Name,varFalse,&Read,&AddToR,vOpt,vOpt,

        vFalse,vOpt,vOpt,&format,vOpt,vTrue,vOpt,vOpt,vOpt,vOpt);

    if(!doc.m_lpDispatch)

    {

        AfxMessageBox("      ");

        return FALSE;

    }

    else

    {

        sel=app.GetSelection();

        if(!sel.m_lpDispatch)

        {

            AfxMessageBox("    ");

            return FALSE;

        }

        return TRUE;

    }

}



BOOL CmyWord::Save()

{

    if(!doc.m_lpDispatch)

    {

        AfxMessageBox("Documents             ");

        return FALSE;

    }

    else

    {

        doc.Save();

        return TRUE;

    }

}



BOOL CmyWord::SaveAs(CString FileName,int SaveType/* =0 */)

{

    CComVariant vTrue(TRUE);

    CComVariant vFalse(FALSE);

    CComVariant vOpt;

    CComVariant cFileName(FileName);

    CComVariant FileFormat(SaveType);

    doc=app.GetActiveDocument();

    if(!doc.m_lpDispatch)

    {

        AfxMessageBox("Document             ");

        return FALSE;

    }

    else

    {  

        //                、          

        /*ActiveDocument.SaveAs FileName:="xiaoyuer.doc", FileFormat:= _

    wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _

    True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _

    False, SaveNativePictureFormat:=False, SaveFormsData:=False, _

        SaveAsAOCELetter:=False*/





        doc.SaveAs(&cFileName,&FileFormat,&vFalse,COleVariant(""),&vTrue,

            COleVariant(""),&vFalse,&vFalse,&vFalse,&vFalse,&vFalse,&vOpt,&vOpt,&vOpt,&vOpt,&vOpt);

        

    }

    return TRUE;

}



BOOL CmyWord::Close(BOOL SaveChange/* =FALSE */)

{

    CComVariant vTrue(TRUE);

    CComVariant vFalse(FALSE);

    CComVariant vOpt;

    CComVariant cSavechage(SaveChange);

    if(!doc.m_lpDispatch)

    {

        AfxMessageBox("_Document       ,      ");

        return FALSE;

    }

    else

    {

        if(TRUE==SaveChange)

        {

            Save();

        }

//        vTrue      ,               

// vba                   



        doc.Close(&vFalse,&vOpt,&vOpt);

    }

    return TRUE;

}



void CmyWord::WriteText(CString Text)

{

    sel.TypeText(Text);

}



void CmyWord::NewLine(int nCount/* =1 */)

{

    if(nCount<=0)

    {

        nCount = 0;

    }

    else

    {

        for(int i=0;i<nCount;i++)

        {

            sel.TypeParagraph();//    

        }

    }

}



void CmyWord::WriteTextNewLineText(CString Text,int nCount/* =1 */)

{

    NewLine(nCount);

    WriteText(Text);

}



void CmyWord::SetFont(BOOL Blod,BOOL Italic/* =FALSE */,BOOL UnderLine/* =FALSE */)

{

    if(!sel.m_lpDispatch)

    {

        AfxMessageBox("      ,        ");

        return;

    }

    else

    {

        sel.SetText("F");

        font=sel.GetFont();//        ;

        font.SetBold(Blod);

        font.SetItalic(Italic);

        font.SetUnderline(UnderLine);

        sel.SetFont(font);

    }

}



void CmyWord::SetFont(CString FontName,int FontSize/* =9 */,long FontColor/* =0 */,long FontBackColor/* =0 */)

{

    if(!sel.m_lpDispatch)

    {

        AfxMessageBox("Select   ,      !");

        return;

    }

    //            ,              .

    //    GetFont       。

    //   SetText       

    sel.SetText("a");

    font=sel.GetFont();//      

    font.SetSize(20);

    font.SetName(FontName);

    font.SetColor(FontColor);

    sel.SetFont(font);//    

}



void CmyWord::SetTableFont(int Row,int Column,CString FontName,int FontSize/* =9 */,long FontColor/* =0 */,long FontBackColor/* =0 */)

{

    Cell c=tab.Cell(Row,Column);

    c.Select();

    _Font ft=sel.GetFont();

    ft.SetName(FontName);

    ft.SetSize(FontSize);

    ft.SetColor(FontColor);

    Range r=sel.GetRange();

    r.SetHighlightColorIndex(FontBackColor);

}



void CmyWord::CreateTable(int Row,int Column)

{

    doc=app.GetActiveDocument();

    Tables tbs=doc.GetTables(); 

    CComVariant Vopt;

    if(!tbs.m_lpDispatch)

    {

        AfxMessageBox("        ");

        return;

    }

    else

    {

        tbs.Add(sel.GetRange(),Row,Column,&Vopt,&Vopt);

        tab=tbs.Item(1);//                    。

    }

    

}



void CmyWord::WriteCellText(int Row,int Column,CString Text)

{

    Cell c=tab.Cell(Row,Column);

    c.Select();//         

    sel.TypeText(Text);

}



void CmyWord::SetParaphformat(int Alignment)

{

    _ParagraphFormat p=sel.GetParagraphFormat();

    p.SetAlignment(Alignment);

    sel.SetParagraphFormat(p);

}





void CmyWord::FindWord(CString FindW,CString RelWord)

{

    sel=app.GetSelection();

    Find myFind=sel.GetFind();

    if(!myFind.m_lpDispatch)

    {

        AfxMessageBox("  Find     ");

        return;

    }

    else

    {

        //       vba   

        myFind.ClearFormatting();

        Replacement repla=myFind.GetReplacement();

        repla.ClearFormatting();



        COleVariant Text(FindW);

        COleVariant re(RelWord);

        COleVariant vTrue((short)TRUE), vFalse((short)FALSE);

        COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

        CComVariant v(1);

        CComVariant v2(2);

        CComVariant v3(_T(""));

        //   Replace            .

        // 1      2       

        //myFind.Execute(Text,vFalse,vFalse,vFalse,vFalse,vFalse,vTrue,&v,vFalse,re,&v2,vOpt,vOpt,vOpt,vOpt);

        myFind.Execute(Text,vFalse,vFalse,vFalse,vFalse,vFalse,

            vTrue,&v,vFalse,&re,&v2,vOpt,vOpt,vOpt,vOpt);

    }

}



void CmyWord::GetWordText(CString &Text)

{

    //CComVariant vOpt;

    COleVariant vOpt(( long )DISP_E_PARAMNOTFOUND,  VT_ERROR); 

    doc=app.GetActiveDocument();//                   

    if(!doc.m_lpDispatch)

    {

        AfxMessageBox("          ");

        return;

    }

    else

    {

        range=doc.Range(vOpt,vOpt);

        Text=range.GetText();

        AfxMessageBox(Text);

    }

}



//       Cppy                    

//          



void CmyWord::PrintWord()

{

    doc = app.GetActiveDocument();

    if(!doc.m_lpDispatch)

    {

        AfxMessageBox("          ");

        return;

    }

    else

    {

        COleVariant covTrue((short)TRUE),

        covFalse((short)FALSE),

        covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);



        doc.PrintOut(covFalse,              // Background.

            covOptional,           // Append.

            covOptional,           // Range.

            covOptional,           // OutputFileName.

            covOptional,           // From.

            covOptional,           // To.

            covOptional,           // Item.

            COleVariant((long)1),  // Copies.

            covOptional,           // Pages.

            covOptional,           // PageType.

            covOptional,           // PrintToFile.

            covOptional,           // Collate.

            covOptional,           // ActivePrinterMacGX.

            covOptional,           // ManualDuplexPrint.

            covOptional,           // PrintZoomColumn  New with Word 2002

            covOptional,           // PrintZoomRow          ditto

            covOptional,           // PrintZoomPaperWidth   ditto

            covOptional);          // PrintZoomPaperHeight  ditto*/

    }



}





void CmyWord::AppClose()

{

    COleVariant vOpt(( long )DISP_E_PARAMNOTFOUND,  VT_ERROR);

    if(!app.m_lpDispatch)

    {

        AfxMessageBox("  Word     ,      ");

        return;

    }

    else

    {

        app.Quit(vOpt,vOpt,vOpt);

        //            ,             。

    }

}







      vc6       MFC 

http://115.com/file/e6gkjtpk#

word     .zip