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