在ATL中,如何将word文档等转换为html文档?

解决方案 »

  1.   

    通过automation操作Word Saveas.
    参考下面的代码
    ////////////////////////////Print Document at background
    #include "stdafx.h"
    #import "E:\Program Files\Microsoft Office\Office10\MSWORD.OLB" named_guids raw_interfaces_only  rename("ExitWindows", "wordExitWindows")
    void wordprint()
    {
    Word::_ApplicationPtr app;
    app.CreateInstance("Word.Application");
    Word::DocumentsPtr docs;
    app->get_Documents(&docs);
    Word::_DocumentPtr doc;
    _variant_t vFileName("c:\\a.doc");
    _variant_t vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    _variant_t vTrue(VARIANT_TRUE);
    _variant_t vFalse(VARIANT_FALSE);
    docs->Open (
    /*[in]*/&vFileName,
    /*[in] VARIANT * ConfirmConversions*/&vOptional,
    /*[in] VARIANT * ReadOnly*/&vOptional,
    /*[in] VARIANT * AddToRecentFiles*/&vOptional,
    /*[in] VARIANT * PasswordDocument*/&vOptional,
    /*[in] VARIANT * PasswordTemplate*/&vOptional,
    /*[in] VARIANT * Revert*/&vOptional,
    /*[in] VARIANT * WritePasswordDocument*/&vOptional,
    /*[in] VARIANT * WritePasswordTemplate*/&vOptional,
    /*[in] VARIANT * Format*/&vOptional,
    /*[in] VARIANT * Encoding*/&vOptional,
    /*[in] VARIANT * Visible*/&vOptional,
    /*[in] VARIANT * OpenAndRepair*/&vOptional,
    /*[in] VARIANT * DocumentDirection*/&vOptional,
    /*[in] VARIANT * NoEncodingDialog*/&vOptional,
    /*[out,retval]*/ &doc );
    _variant_t vCopies((short)1);
    app->PrintOut (
    /*[in] VARIANT * Background = &vtMissing*/ &vTrue ,
    /*[in] VARIANT * Append = &vtMissing*/&vOptional ,
    /*[in] VARIANT * Range = &vtMissing*/ &vOptional ,
    /*[in] VARIANT * OutputFileName = &vtMissing*/&vOptional ,
    /*[in] VARIANT * From = &vtMissing*/ &vOptional,
    /*[in] VARIANT * To = &vtMissing*/ &vOptional,
    /*[in] VARIANT * Item = &vtMissing*/ &vOptional,
    /*[in] VARIANT * Copies = &vtMissing*/&vCopies ,
    /*[in] VARIANT * Pages = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PageType = &vtMissing*/&vOptional ,
    /*[in] VARIANT * PrintToFile = &vtMissing*/ &vFalse,
    /*[in] VARIANT * Collate = &vtMissing*/ &vOptional,
    /*[in] VARIANT * FileName = &vtMissing*/ &vOptional,
    /*[in] VARIANT * ActivePrinterMacGX = &vtMissing*/ &vOptional,
    /*[in] VARIANT * ManualDuplexPrint = &vtMissing*/&vOptional ,
    /*[in] VARIANT * PrintZoomColumn = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PrintZoomRow = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PrintZoomPaperWidth = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PrintZoomPaperHeight = &vtMissing*/ &vOptional) ;
    Sleep(3000);
    app->Quit(&vOptional,&vOptional,&vOptional);}
    int _tmain(int argc, _TCHAR* argv[])
    {
    printf("Automate word to print a document, test by masterz with VC.NET2003 on WindowXP, OfficeXP\n");
    CoInitialize(NULL);
    wordprint();
    CoUninitialize();
    return 0;
    }
      

  2.   

    2楼意思是利用Word的保存功能,直接保存成html就可以了?
      

  3.   

    各位,还有没有什么好办法?
    to masterz(www.fruitfruit.com) 
    你的方法我试过了,好像不行
      

  4.   

    http://www.netyi.net/in.asp?id=lockllb 在这里有计算机的大多数的答案~学计算机的好地方
      

  5.   

    “你的方法我试过了,好像不行”
    不知道你为什么会不成功,
    // wordtohtml.cpp : Defines the entry point for the console application.
    //#include "stdafx.h"
    #import "G:\Program Files\Microsoft Office\Office11\MSWORD.OLB" named_guids raw_interfaces_only rename("ExitWindows", "wordExitWindows")
    void wordtohtml()
    {
    printf("Automate word to save xxx.doc as onega.htm, test by masterz with VC.NET2003 on Windowx2003, Office2003\n");
    Word::_ApplicationPtr app;
    app.CreateInstance("Word.Application");
    Word::DocumentsPtr docs;
    app->get_Documents(&docs);
    Word::_DocumentPtr doc;
    _variant_t vFileName("c:\\a.doc");
    _variant_t vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    _variant_t vTrue(VARIANT_TRUE);
    _variant_t vFalse(VARIANT_FALSE);
    docs->Open (
    /*[in]*/&vFileName,
    /*[in] VARIANT * ConfirmConversions*/&vOptional,
    /*[in] VARIANT * ReadOnly*/&vOptional,
    /*[in] VARIANT * AddToRecentFiles*/&vOptional,
    /*[in] VARIANT * PasswordDocument*/&vOptional,
    /*[in] VARIANT * PasswordTemplate*/&vOptional,
    /*[in] VARIANT * Revert*/&vOptional,
    /*[in] VARIANT * WritePasswordDocument*/&vOptional,
    /*[in] VARIANT * WritePasswordTemplate*/&vOptional,
    /*[in] VARIANT * Format*/&vOptional,
    /*[in] VARIANT * Encoding*/&vOptional,
    /*[in] VARIANT * Visible*/&vOptional,
    /*[in] VARIANT * OpenAndRepair*/&vOptional,
    /*[in] VARIANT * DocumentDirection*/&vOptional,
    /*[in] VARIANT * NoEncodingDialog*/&vOptional,
    /*[in] VARIANT * XMLTransform*/&vOptional ,
    /*[out,retval]*/ &doc );
    _variant_t vCopies((short)1);
    DeleteFile("c:\\onega.htm");
    _variant_t filename("c:\\onega.htm");
    _variant_t FileFormat((long)Word::wdFormatHTML);
    doc->SaveAs (&filename,&FileFormat);
    doc->put_Saved(VARIANT_TRUE);
    app->Quit(&vOptional,&vOptional,&vOptional);}
    int _tmain(int argc, _TCHAR* argv[])
    {
    CoInitialize(NULL);
    wordtohtml();
    CoUninitialize();
    return 0;
    }
      

  6.   

    读取 word转为byte  再用Response.Charset="GB2312"; 
             Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");  
             Response.ContentEncoding = System.Text.Encoding.UTF8; 
             Response.ContentType = "text/html";  
             Response.BinaryWrite();的方式输出