利用MSWORD.OLB实现多种格式(DOC、rtf、HTML、XML...)转换成TXT
Posted on 2007-09-18 12:04 freemobile 阅读(5725) 评论(6) 收藏 举报
说一下用VC实现的过程。用于设计的Joymobook(www.joymo.cn)中的一个功能。
首先加载MSWORD.OLB:
classwizard->automation->add class->from a type library,选择program files/microsoft office/office11(用的是office 2003)下的MSWORD.OLB,确定后,在工程中生成msword.ht msword.cpp两个文件。
代码部分:
// doc、html、xml转Txt,www.joymo.cn
_Application oWord ;
Documents oDocs;
_Document oDoc;
COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR); //For optional args
//Start Word
if(!(oWord.CreateDispatch("Word.Application", NULL)))
{
AfxMessageBox("Error starting Word.", MB_SETFOREGROUND);
return;
}
//Open a document
oDocs = oWord.GetDocuments();
//oDoc = oDocs.Open(COleVariant("C:\\Doc1.doc"), vOpt, vOpt,
// vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt);
// Note: If you are using the Word 2000 library, you will
// need to specify 12 arguments for the Open method
//
// oDoc = oDocs.Open(COleVariant("C:\\Doc1.doc"), vOpt, vOpt, vOpt,
// vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt);
//
// Note: If you are using the Word 2002 library, you will
// need to specify 16 arguments for the Open method
//
// oDoc = oDocs.Open(COleVariant("C:\\Doc1.doc"), vOpt, vOpt, vOpt,
// vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt,
// vOpt, vOpt, 0, vOpt);
// Note: If you are using the Office Word 2003 library or the Office Word 2007
// library, you will need to specify 16 arguments for the Open method
//
oDoc = oDocs.Open(COleVariant("C:\\Province.xml"), vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt);
oDoc.SaveAs(COleVariant("C:\\Doc1.txt"), COleVariant((short)2), vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt);
//Close the document without saving changes
oDoc.Close(COleVariant((short)false), vOpt, vOpt);
//Clean-up
oDoc.ReleaseDispatch();
oDocs.ReleaseDispatch();
//oWordBasic.ReleaseDispatch();
//Quit Word
oWord.Quit(COleVariant((short)false), vOpt, vOpt);
}
注意代码中oDocs.Open的说明,不同的版本,入参个数是不一样的。
另外,SaveAs中的第二个参数,表示存为文本。
首先加载MSWORD.OLB:
classwizard->automation->add class->from a type library,选择program files/microsoft office/office11(用的是office 2003)下的MSWORD.OLB,确定后,在工程中生成msword.ht msword.cpp两个文件。
代码部分:
// doc、html、xml转Txt,www.joymo.cn
_Application oWord ;
Documents oDocs;
_Document oDoc;
COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR); //For optional args
//Start Word
if(!(oWord.CreateDispatch("Word.Application", NULL)))
{
AfxMessageBox("Error starting Word.", MB_SETFOREGROUND);
return;
}
//Open a document
oDocs = oWord.GetDocuments();
//oDoc = oDocs.Open(COleVariant("C:\\Doc1.doc"), vOpt, vOpt,
// vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt);
// Note: If you are using the Word 2000 library, you will
// need to specify 12 arguments for the Open method
//
// oDoc = oDocs.Open(COleVariant("C:\\Doc1.doc"), vOpt, vOpt, vOpt,
// vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt);
//
// Note: If you are using the Word 2002 library, you will
// need to specify 16 arguments for the Open method
//
// oDoc = oDocs.Open(COleVariant("C:\\Doc1.doc"), vOpt, vOpt, vOpt,
// vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt,
// vOpt, vOpt, 0, vOpt);
// Note: If you are using the Office Word 2003 library or the Office Word 2007
// library, you will need to specify 16 arguments for the Open method
//
oDoc = oDocs.Open(COleVariant("C:\\Province.xml"), vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt);
oDoc.SaveAs(COleVariant("C:\\Doc1.txt"), COleVariant((short)2), vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt);
//Close the document without saving changes
oDoc.Close(COleVariant((short)false), vOpt, vOpt);
//Clean-up
oDoc.ReleaseDispatch();
oDocs.ReleaseDispatch();
//oWordBasic.ReleaseDispatch();
//Quit Word
oWord.Quit(COleVariant((short)false), vOpt, vOpt);
}
注意代码中oDocs.Open的说明,不同的版本,入参个数是不一样的。
另外,SaveAs中的第二个参数,表示存为文本。