//------------------------------------- 01.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
//-------------------------------------
//------------------------------------- 01.cpp
#include <tchar.h>
#include <stdio.h>
#include "01.h"
void main()
{
// Иницилизация COM объекта
CoInitialize(NULL);
// Использовать именное пространство Excel
using namespace Excel;
// Соединение с MS Excel
_ApplicationPtr pXL;
try {
pXL.CreateInstance(L"Excel.Application");
// Показать приложение VARIANT_TRUE или не показывать VARIANT_FALSE
pXL->Visible[0] = VARIANT_TRUE;
// Подключение книги
WorkbooksPtr pBooks = pXL->Workbooks;
// Создание новой книги
_WorkbookPtr pBook = pBooks->Add((long)xlWorksheet);
/*
// Открытие существующего файла MS Excel
pBooks->Open(_bstr_t(Имя файла MS Excel));
*/
/*
// Указатель на N книгу
WorkbookPtr book = pXL->Workbooks->Item[N];
*/
// Указатель на активную страницу
_WorksheetPtr pSheet = pXL->ActiveSheet;
/*
// Указатель на N страницу
_WorksheetPtr pSheet = pXL->Worksheets->Item[N];
*/
// Изменение имени страницы
pSheet->Name = "Market Share!";
// Доступ ко всем ячейкам
RangePtr pRange = pSheet->Cells;
RangePtr pCell;
pCell = pRange->Item[1][2]; // A2
pCell->Value2 = "Company A";
pCell = pRange->Item[2][2]; // B2
pCell->Value2 = "Company B";
pCell = pRange->Item[3][2]; // C2
pCell->Value2 = "Company C";
pCell = pRange->Item[4][2]; // D2
pCell->Value2 = "Company D";
pCell = pRange->Item[1][3]; // A3
pCell->Value2 = 75.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["A2:D3"];
_ChartPtr pChart = pBook->Charts->Add();
pChart->ChartWizard((Range*) pRange, (long) xl3DPie, 7L, (long) xlRows, 1L, 0L, 2L, "Market Share");
pBook->Saved[0] = VARIANT_TRUE;
// Запись книги в файл Excel
_variant_t vname, vnull, vformat, vamode, vconflict;
// Задание имени файла Excel
vname.SetString(_T("C:\\test2.xls"));
/*
book->SaveAs( vname // File name
,xlWorkbookNormal // File format
,vnull // Password
,vnull // Write-res password
,vnull // Read-only recommended
,vnull // Create backup
,xlNoChange // Access mode
,xlLocalSessionChanges // Conflict resolution);
*/
pBook->SaveAs(vname,xlWorkbookNormal,vnull,vnull,vnull,vnull,xlNoChange,xlLocalSessionChanges);
// Закрытие книги
pBook->Close();
// Выход из Excel
pXL->Quit();
// Закрытие COM
// CoUninitialize();
}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); // только для консольных приложений
printf(buf);
}
}