Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement