无线我的无限

让无线技术给生活带来无限快乐
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用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中的第二个参数,表示存为文本。