По сслылке, немного переделанное.... Показывает график двумерных данных.
| Код | //office.h //#define USES_MSO97 #define USES_MSO2000 //#define USES_MSO2002 //#define USES_MSO2003
#ifdef USES_MSO97 #import "C:\Program Files\Microsoft Office\Office\Excel8.OLB" auto_search auto_rename #endif #ifdef USES_MSO2000 #import "C:\Program Files\Microsoft Office\Office\Excel9.OLB" auto_search auto_rename #endif #ifdef USES_MSO2002 #import "progid:Excel.Sheet.8" auto_search auto_rename rename_search_namespace("Office9") \ rename("DialogBox","_DialogBox") \ rename("RGB","_RGB") \ exclude("IFont","IPicture") #endif #ifdef USES_MSO2003 #import "progid:Excel.Sheet.8" auto_search auto_rename rename_search_namespace("Office9") \ rename("DialogBox","_DialogBox") \ rename("RGB","_RGB") \ exclude("IFont","IPicture") #endif
// mycpp.cpp // Иницилизация COM объекта ::CoInitialize(NULL); try { // Соединение с MS Excel Excel::_ApplicationPtr pXL; pXL.CreateInstance("Excel.Application"); // Показать приложение VARIANT_TRUE или не показывать VARIANT_FALSE pXL->Visible[0] = VARIANT_TRUE; // Подключение книги Excel::WorkbooksPtr pBooks = pXL->Workbooks; // Создание новой книги Excel::_WorkbookPtr pBook = pBooks->Add((long)Excel::xlWorksheet); // Указатель на активную страницу Excel::_WorksheetPtr pSheet = pXL->ActiveSheet; // Изменение имени страницы pSheet->Name = "Market Share!"; // Доступ ко всем ячейкам Excel::RangePtr pRange = pSheet->Cells;
Excel::RangePtr pCell;
pCell = pRange->Item[1][2]; // A2 pCell->Value2 = 1.0; pCell = pRange->Item[2][2]; // B2 pCell->Value2 = 2.0; pCell = pRange->Item[3][2]; // C2 pCell->Value2 = 5.0; pCell = pRange->Item[4][2]; // D2 pCell->Value2 = 8.0; pCell = pRange->Item[1][3]; // A3 pCell->Value2 = 5.0; pCell = pRange->Item[2][3]; // B3 pCell->Value2 = 14.0; pCell = pRange->Item[3][3]; // C3 pCell->Value2 = 7.0; pCell = pRange->Item[4][3]; // D3 pCell->Value2 = 7.0;
// Создание диаграммы pRange = pSheet->Range["B1:C4"]; Excel::_ChartPtr pChart = pBook->Charts->Add(); pChart->ChartWizard((Excel::Range*) pRange, (long) Excel::xlXYScatter, 6L, (long) Excel::xlColumns, 1L, 0L, 2L, "Market Share", "1", "2"); pChart->ChartType = Excel::xlXYScatterLinesNoMarkers; pBook->Close(); // Выход из Excel pXL->Quit(); } catch (_com_error& er) { char buf[1024]; sprintf(buf,"_com_error:\n" "Error : %08lX\n" "ErrorMessage: %s\n" "Description : %s\n" "Source : %s\n", er.Error(), (LPCTSTR)_bstr_t(er.ErrorMessage()), (LPCTSTR)_bstr_t(er.Description()), (LPCTSTR)_bstr_t(er.Source()) );
::CharToOem(buf,buf); ::MessageBox(m_hWnd, buf, "COM Error", MB_OK | MB_ICONERROR); } // Закрытие COM ::CoUninitialize();
|
Тут неясно так уж ли нужен excel для "отладки" и в чем его специфическая роль. По поводу времени - я бы оценил написание подобного кода в 1 день. |