Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: C++ И Excel  (Прочитано 19697 раз)
0 Пользователей и 1 Гость смотрят эту тему.
4upka
Гость
« : 21-09-2007 09:18 » 

помогите пожалуйста как через с++ связаться с excel-ем.
т.е чтение и запись в какую-нибудь книгу,
или если можно дайте ссылочку где про ето написано?
заранее спасибо!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-09-2007 15:57 » 

4upka, см. в сторону COM.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
volkov75
Гость
« Ответ #2 : 28-10-2007 19:17 » new

Код:
//------------------------------------- 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);
  }

}
« Последнее редактирование: 29-10-2007 04:11 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines