#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();
}
}
}
}
}
Проблема с .xls (Excel) документом ?
У меня вот какая проблема. Мне нужно написать программу для чтения из .xls (Excel) документа. Например я задаю квадрат А 100 и программа читает информацию из этого квадрата но я не могу найти функцию для этого, есть ли вообще такая функция, если есть то как называется ??? :confused: :cool:
Как я понемаю, на этот вопрос не у кого нет ответа :eek:
Вкратце набросал пример: