Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с .xls (Excel) документом ?

14K
12 октября 2007 года
A.Victor
52 / / 07.10.2007
У меня вот какая проблема. Мне нужно написать программу для чтения из .xls (Excel) документа. Например я задаю квадрат А 100 и программа читает информацию из этого квадрата но я не могу найти функцию для этого, есть ли вообще такая функция, если есть то как называется ??? :confused: :cool:
14K
13 октября 2007 года
A.Victor
52 / / 07.10.2007
Как я понемаю, на этот вопрос не у кого нет ответа :eek:
2.2K
15 октября 2007 года
REFOT
181 / / 08.04.2005
Вкратце набросал пример:


Код:
#include "excel/CApplication.h"
#include "excel/CWorkbooks.h"
#include "excel/CWorkbook.h"
#include "excel/CWorksheets.h"
#include "excel/CWorksheet.h"
#include "excel/CRange.h"

......

CApplication m_app;
HRESULT hr = S_OK;
::CoInitialize(NULL);

CLSID clsid;
if(FAILED(hr=::CLSIDFromProgID(L"Excel.Application",&clsid)))
   return hr;
     
LPUNKNOWN pUnk = NULL;
if(SUCCEEDED(::GetActiveObject(clsid,NULL,&pUnk))){
   LPDISPATCH pDisp = NULL;
   if(FAILED(pUnk->QueryInterface(IID_IDispatch,(void**) &pDisp))){
      pUnk->Release();
      return hr;
   }
   m_app.AttachDispatch(pDisp);    
   pUnk->Release();
}
else{
   COleException InfoError;
   if(m_app.CreateDispatch(clsid,&InfoError)){
      CString strVer = m_app.get_Version();
      if(strVer.Find(_T("11")) == -1 && strVer.Find(_T("10")) == -1)
         hr = ERROR_PRODUCT_VERSION;
   }
   else return InfoError.m_sc;
 
   if(m_app.m_lpDispatch){
      m_app.put_Visible(FALSE); //делаем не видимым окно
      m_app.put_SheetsInNewWorkbook(1L);
      LPDISPATCH lpDisp=NULL;
      if(!(lpDisp=m_app.get_Workbooks()))
         hr = E_NOINTERFACE;
      else{
         CWorkbooks xlWorkbooks;
         xlWorkbooks.AttachDispatch(lpDisp);
         COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
         if(!(lpDisp=xlWorkbooks.Add(covOptional)))
            hr = E_NOINTERFACE;
         else{           
            COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);              
            lpDisp = xlWorkbooks._Open("E:\\Мои документы\\Лист Micros123oft Excel.xls",covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
               
            CWorkbook  xlWorkbook;
            xlWorkbook.AttachDispatch(lpDisp);
            if(!(lpDisp=xlWorkbook.get_Sheets()))
               hr = E_NOINTERFACE;
            else{
               CWorksheets m_xlWorkSheets(lpDisp);
               //Переключаемся на первый лист
               CWorksheet m_xlWorkSheet(m_xlWorkSheets.get_Item(COleVariant(1L)));
               m_xlWorkSheet.Activate();
               CRange Range(m_xlWorkSheet.get_Range(COleVariant("A1"),COleVariant("A1")));
               //Получаем значение из ячейки A1:A1
               VARIANT value = Range.get_Value2();
            }
         }
      }
   }
}


Это будет работать, если на машине стоит офис XP или 2003
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог