www.pudn.com > testWordAll.rar > WordDocOperateBasic.cpp
// WordDocOperateBasic.cpp: implementation of the CWordDocOperateBasic class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "WordDocOperateBasic.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CWordDocOperateBasic::CWordDocOperateBasic()
{
//基本参数初始化
m_wordStruct.PreviewOrPrint = 1; //默认为直接打印1,0为预览
m_wordStruct.PrintNum = 1; //打印份数:1
m_wordStruct.PrintPageSize = "A4"; //打印纸张大小:A4
m_wordStruct.WordVer = "Word2000"; //Word默认版本:Word2000
m_wordStruct.m_WordModelName = "";
m_wordStruct.m_tempWordDoc = "";
}
CWordDocOperateBasic::~CWordDocOperateBasic()
{
}
//入口函数
BOOL CWordDocOperateBasic::WordDocOperate(){
BOOL res = FALSE;
return res;
}
//word Ver
CString CWordDocOperateBasic::GetWordVer()
{
CString myWordVer = m_wordStruct.WordVer;
myWordVer.Format("%s",myWordVer);
return myWordVer;
}
//关闭已打开的word app
BOOL CWordDocOperateBasic::CloseWord(){
BOOL res = FALSE;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
try{
m_Docs.ReleaseDispatch();//断开关联;
m_Sel.ReleaseDispatch();
//退出WORD
m_App.Quit(covOptional, covOptional, covOptional);
m_App.Quit(covOptional, covOptional, covOptional);
m_App.ReleaseDispatch();
res = TRUE;
}
catch(CException e)
{
CString error;
error.Format("关闭word App 错误信息:%s",e.GetErrorMessage);
return FALSE;
}
return res;
}
//打开Word
BOOL CWordDocOperateBasic::OpenWord(){
BOOL res = FALSE;
if(m_wordStruct.m_WordModelName == ""){
return FALSE;
}
//模版
CString strDocModelName = m_wordStruct.m_WordModelName;
//临时文件
CString strDocTempName = m_wordStruct.m_tempWordDoc;
//::DeleteFile(strDocTempName); //先不删除原有的临时word文件,有可能用户要
res = CopyFile(strDocModelName,strDocTempName,TRUE);
if (res = false){
return FALSE;
}
CString strDocName = "";
strDocName = strDocTempName;
COleVariant varFilePath(strDocName);
COleVariant varstrNull("");
COleVariant varZero((short)0);
COleVariant varTrue(short(1),VT_BOOL);
COleVariant varFalse(short(0),VT_BOOL);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
try{
m_Docs.ReleaseDispatch();
m_Sel.ReleaseDispatch();
m_App.m_bAutoRelease=true;
if(!m_App.CreateDispatch("Word.Application"))
{
return FALSE;
}
//是否word可见
int nPP = m_wordStruct.PreviewOrPrint;
if (nPP == 0){
m_App.SetVisible(TRUE); //显示Word,如果0,TRUE:预览方式
}else{
m_App.SetVisible(FALSE); //隐藏Word,如果1,FALSE:直接打印方式
}
//打开
m_Docs.AttachDispatch(m_App.GetDocuments());//将Documents类对象m_Docs和Idispatch接口关联起来;
CString m_WordVer = "Word2003";
if (m_WordVer == "Word2003"){
//office2000
m_Docs.Open(varFilePath,varFalse,varFalse,varFalse,
varstrNull,varstrNull,varFalse,varstrNull,
varstrNull,varTrue,varTrue,varTrue);
}else{
//office2003
m_Docs.Open( //可看成VB语句set testDoc = Word.documents.Open(…)
varFilePath,
varFalse, // Confirm Conversion.
varFalse, // ReadOnly.
varFalse, // AddToRecentFiles.
covOptional, // PasswordDocument.
covOptional, // PasswordTemplate.
varTrue, // Revert.
covOptional, // WritePasswordDocument.
covOptional, // WritePasswordTemplate.
covOptional, // Format. // Last argument for Word 97
covOptional, // Encoding // New for Word 2000/2002
varTrue, // Visible
covOptional, // OpenConflictDocument
covOptional, // OpenAndRepair
varZero, // DocumentDirection wdDocumentDirection LeftToRight
covOptional // NoEncodingDialog
);
}
//得到当前激活的文档
m_Doc = m_App.GetActiveDocument();
res = TRUE;
}
catch(CException e)
{
CString error;
error.Format("打开word App 错误信息:%s",e.GetErrorMessage);
return FALSE;
}
return res;
}
//打印当前文档
BOOL CWordDocOperateBasic::PrintDocument()
{
BOOL res = FALSE;
try{
//打印
CString strPrinterName = m_App.GetActivePrinter();
LPCTSTR lpszActivePrinter(strPrinterName);
m_App.SetActivePrinter(lpszActivePrinter); //设置当前打印机
COleVariant covTrue((short)TRUE), covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //定义打印属性
m_Doc.PrintOut(covFalse,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
COleVariant((long)1),
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional);
}
catch(CException e)
{
CString error;
error.Format("关闭word App 错误信息:%s",e.GetErrorMessage);
return FALSE;
}
return res;
}
//保存word文件为strWordTempName
BOOL CWordDocOperateBasic::SaveWordDoc(CString strWordTempName){
BOOL res = FALSE;
try{
//save doc
CString m_strWordVer = GetWordVer();
m_strWordVer.MakeUpper();
COleVariant varstrNull("");
COleVariant varZero((short)0);
COleVariant varTrue(short(1),VT_BOOL);
COleVariant varFalse(short(0),VT_BOOL);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
////
if (m_strWordVer == "WORD2000"){
//word 2000
m_Doc.SaveAs(COleVariant(strWordTempName),
varZero,
varFalse, varstrNull, varTrue, varstrNull,
varFalse, varFalse, varFalse, varFalse, varFalse);
}
////
if (m_strWordVer == "WORD2003"){
//word 2003
m_Doc.SaveAs(COleVariant(strWordTempName),
varZero,
varFalse, varstrNull, varTrue, varstrNull,
varFalse, varFalse, varFalse, varFalse, varFalse,
varFalse,varFalse,varFalse,varTrue,varTrue);
}
}
catch(CException e)
{
CString error;
error.Format("关闭word App 错误信息:%s",e.GetErrorMessage);
return FALSE;
}
return res;
}