Прочитать содержимое документа Word.

Тема в разделе "WASM.WIN32", создана пользователем _Juicy, 11 июл 2011.

  1. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Как программно прочитать документ ворд (текст в нем)? Скажем, подстроку найти?
     
  2. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Код (Text):
    1. void GetTextFromDoc(WCHAR *file,WCHAR *buf,LONG *len){
    2.     HRESULT hr;
    3.     CLSID   Word;
    4.     IDispatch   *IDWordApp,*IDWordDocuments,*IDWordDoc,*IDRange;
    5.    
    6.     CLSIDFromProgID(WORD_APP,&Word);
    7.  
    8.     hr = CoCreateInstance(Word,NULL,CLSCTX_LOCAL_SERVER,IID_IDispatch,(LPVOID*)&IDWordApp);
    9.         if (FAILED(hr))
    10.             return;
    11.        
    12.  
    13.     VARIANT varResult;
    14.  
    15.     hr=GetProperty(IDWordApp,OLESTR("Documents"),&varResult);
    16.     if (FAILED(hr))
    17.             return;
    18.     IDWordDocuments=varResult.pdispVal;
    19.  
    20.  
    21.     DISPPARAMS dp = {0};
    22.     dp.cArgs = 1;
    23.     dp.cNamedArgs = 0;
    24.     dp.rgvarg = new VARIANT[dp.cArgs];
    25.     dp.rgvarg[0].vt = VT_BSTR;
    26.     dp.rgvarg[0].bstrVal =SysAllocString(file);
    27.    
    28.  
    29.     ZeroMemory(&varResult,sizeof(varResult));
    30.     hr=CallMethod(IDWordDocuments,OLESTR("Open"),&dp,&varResult);
    31.     SysFreeString(dp.rgvarg[0].bstrVal);
    32.     delete []dp.rgvarg ;
    33.     IDWordDoc = varResult.pdispVal;
    34.    
    35. if (!FAILED(hr)){
    36.     LONG temp;
    37.         hr=GetProperty(IDWordDoc,OLESTR("Content"),&varResult);
    38.         IDRange = varResult.pdispVal;
    39.         hr=GetProperty(IDRange,OLESTR("Text"),&varResult);
    40.         temp = wcslen(varResult.bstrVal);
    41.         if (*len > temp){
    42.             wcscat(buf,varResult.bstrVal);
    43.         };
    44.    
    45.     *len = temp;
    46. };
    47.    
    48.     dp.cArgs = 0;
    49.     dp.cNamedArgs = 0;
    50.     hr=CallMethod(IDWordApp,OLESTR("Quit"),&dp,&varResult);
    51.  
    52.     IDRange->Release();
    53.     IDWordDoc->Release();
    54.     IDWordDocuments->Release();
    55.     IDWordApp->Release();
    56.    
    57. };
     
  3. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Спасибо!