Использование директивы #import в Visual C++ Страница 4. MS Excel
|
Страница 4 из 7 MS Excel// console.cpp : Defines the entry point for the console application.
#include "stdafx.h" #include <stdio.h> #include "Office.h"
void main() { ::CoInitialize(NULL); try { using namespace Excel; _ApplicationPtr excel("Excel.Application"); excel->Visible[0] = true;
// создаём новую книгу _WorkbookPtr book = excel->Workbooks->Add(); // получаем первый лист (в VBA нумерация с единицы) _WorksheetPtr sheet = book->Worksheets->Item[1L]; // Аналогичная конструкция на VBA выглядит так: // book.Worksheets[1] // В библиотеке типов Item объявляется как метод или // свойство по умолчанию (id[0]), поэтому в VB его // можно опускать. На C++ такое, естественно, не пройдёт.
// заполняем ячейки sheet->Range["B2"]->FormulaR1C1 = "Строка 1"; sheet->Range["C2"]->FormulaR1C1 = 12345L; sheet->Range["B3"]->FormulaR1C1 = "Строка 2"; sheet->Range["C3"]->FormulaR1C1 = 54321L; // заполняем и активизируем итоговую строку sheet->Range["B4"]->FormulaR1C1 = "Итого:"; sheet->Range["C4"]->FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"; sheet->Range["C4"]->Activate();
// типа делаем красиво :o) sheet->Range["A4:D4"]->->ColorIndex = 27L; sheet->Range["A4:D4"]->Interior->ColorIndex = 5L; // Постфикс L говорит, что константа является числом типа long. // Вы всегда должны приводить числа к типу long или short при // преобразованию их к _variant_t, т.к. преобразование типа int // к _variant_t не реализовано. Это вызвано не желанием // разработчиков компилятора усложнить нам жизнь, а спецификой // самого типа int.
} 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); } ::CoUninitialize(); } |