具体问题标题所示。
我想读取word文档内容包括其具体格式,但是没找到好的可行方法,哪位大侠指教一二

解决方案 »

  1.   

    微软没有公布office的标准格式吗?
      

  2.   


    没有ms公布office的文件格式
      

  3.   

    注意:2007的office中,有的类名改为了后面加0,如CRange0 CDocument0, 一些函数名称也改了,格式修改如getText改为了get_Text(),读取word 文档:记得修改CDocuments , CDocument0 等的头文件中的如下://另外记得加上#pragma once#pragma once#import "K:\\Program Files XXX\\Microsoft Office\\Office XX\\MSWORD.OLB"  no_namespace    raw_interfaces_only  \
      rename("FindText","_FindText")       \
      rename("Rectangle","_Rectangle")   \
      rename("ExitWindows","_ExitWindows")如上我说的,导入typelib后,添加Application Document.. 等类。如下为一个snippet#include "CApplication.h"
    #include "CDocument0.h"
    #include "CDocuments.h" CApplication oWord;
     CDocuments oDocs;
     CDocument0 oDoc;void CVCreadwriteRTFDlg::OnBnClickedButton1() 

    // 变量的声明 
    COleVariant  vTrue((short)TRUE),  
                      vFalse((short)FALSE),  
                      vOpt((long)DISP_E_PARAMNOTFOUND,  VT_ERROR); CApplication oWordApp ; 
    CSelection oSel ;  
    CDocuments oDocs ; 
    CDocument0 oDoc ;  
    CParagraphs paragraphs ; CStringArray aryText; long paCounst; 
    int  lc ; 
      
        // 首先建立一个word实例对象 
    if (!oWordApp.CreateDispatch(TEXT("Word.Application")) ){ AfxMessageBox( TEXT( "CreateDispatch  failed." ) , MB_OK &brvbarMB_SETFOREGROUND);  
    return;  // 一定要返回,否则程序崩溃 
    } // 显示此对象文件 ,您也可以不调用此句,不显示对象文件 
    oWordApp.Set_Visible(TRUE); // 创建文档 
    oDocs = oWordApp.get_Documents();  // 打开一个新文档,将e:\\BuildJobEdit.rtf文件的内容添加到新文档中 
    CComVariant tpl(_T("e:\\BuildJobEdit.rtf")), NewTemplate(false), DocType(0), Visble; 
    oDoc = oDocs.Add(&tpl,&NewTemplate,&DocType,&Visble); 
          
    // 选中文档中的所有内容 
    oSel = oWordApp.get_Selection(); 
    oSel.WholeStory();// 此句必须有,否则后续代码无效。 // 得到所有段 
    paragraphs = oSel.get_Paragraphs(); 
      
    paCounst = paragraphs.get_Count(); 
      
    // 将所有段中的每一段都存在数组里 
    for( lc = 1 ; lc < paCounst+1 ; lc++ ){ // 得到一段 
    CParagraph  paragraph; 
    paragraph = paragraphs.Item( (long)lc ); // 得到一段的文本 
    CRange range = paragraph.get_Range(); 
    CString strRangeText = range.get_Text(); CFont font = range.get_Font(); // 设置文本的字体大小与颜色 
    //font.put_Color( RGB(0,255,0) ); 
    //font.put_Size( 12 ); 
    // AfxMessageBox( strRangeText ); // 保存到数组里 
    aryText.Add( strRangeText ); //释放对象 
    paragraph.ReleaseDispatch(); } 
      

  4.   

    word提供了一组COM接口可以以编程的方式访问文档内容