Advertisement
Guest User

Excel

a guest
Jun 2nd, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. // console.cpp : Defines the entry point for the console application.
  2.  
  3. #include "stdafx.h"
  4. #include <stdio.h>
  5. #include "Office.h"
  6.  
  7. void main()
  8. {
  9.   ::CoInitialize(NULL);
  10.   try {
  11.     using namespace Excel;
  12.     _ApplicationPtr excel("Excel.Application");
  13.     excel->Visible[0] = true;
  14.  
  15.     // создаём новую книгу
  16.     _WorkbookPtr  book  = excel->Workbooks->Add();
  17.     // получаем первый лист (в VBA нумерация с единицы)
  18.     _WorksheetPtr sheet = book->Worksheets->Item[1L];
  19.                        // Аналогичная конструкция на VBA выглядит так:
  20.                        // book.Worksheets[1]
  21.                        // В библиотеке типов Item объявляется как метод или
  22.                        // свойство по умолчанию (id[0]), поэтому в VB его
  23.                        // можно опускать. На C++ такое, естественно, не пройдёт.
  24.  
  25.     // заполняем ячейки
  26.     sheet->Range["B2"]->FormulaR1C1 = "Строка 1";
  27.     sheet->Range["C2"]->FormulaR1C1 = 12345L;
  28.     sheet->Range["B3"]->FormulaR1C1 = "Строка 2";
  29.     sheet->Range["C3"]->FormulaR1C1 = 54321L;
  30.     // заполняем и активизируем итоговую строку
  31.     sheet->Range["B4"]->FormulaR1C1 = "Итого:";
  32.     sheet->Range["C4"]->FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)";
  33.     sheet->Range["C4"]->Activate();
  34.  
  35.     // типа делаем красиво :o)
  36.     sheet->Range["A4:D4"]->->ColorIndex = 27L;
  37.     sheet->Range["A4:D4"]->Interior->ColorIndex = 5L;
  38.              // Постфикс L говорит, что константа является числом типа long.
  39.              // Вы всегда должны приводить числа к типу long или short при
  40.              // преобразованию их к _variant_t, т.к. преобразование типа int
  41.              // к _variant_t не реализовано. Это вызвано не желанием
  42.              // разработчиков компилятора усложнить нам жизнь, а спецификой
  43.              // самого типа int.
  44.  
  45.   } catch (_com_error& er) {
  46.     char buf[1024];
  47.     sprintf(buf,"_com_error:\n"
  48.                 "Error       : %08lX\n"
  49.                 "ErrorMessage: %s\n"
  50.                 "Description : %s\n"
  51.                 "Source      : %s\n",
  52.                 er.Error(),
  53.                 (LPCTSTR)_bstr_t(er.ErrorMessage()),
  54.                 (LPCTSTR)_bstr_t(er.Description()),
  55.                 (LPCTSTR)_bstr_t(er.Source()));
  56.  
  57.     CharToOem(buf,buf); // только для косольных приложений
  58.     printf(buf);
  59.   }
  60.   ::CoUninitialize();
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement