Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/45: Рейтинг темы: голосов - 45, средняя оценка - 4.67
Dr.Brain
0 / 0 / 0
Регистрация: 26.05.2007
Сообщений: 3
1

Работа с Excel компоненты закладки Office2k

11.06.2007, 18:57. Просмотров 8149. Ответов 2
Метки нет (Все метки)

Друзья спасайте!!! Нигде не могу найти литературу по работе с компонентами закладки Office2k ExselApplication, ExselWorkbook, ExselWorkSheet.
Необходимо открыть книгу Exsel (например C:\temp.XLS), считать значение ячейки и сохранить (например C:\report.XLS)
:eek:
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2007, 18:57
Ответы с готовыми решениями:

Закладки в word, открытие excel-файла
1. Пытаюсь заполнить вордовский файл, используя закладки( то есть в готовом...

office2k
Помогите... в 6 версии билдера были компоненты во вкладке office2k.. а в 9...

Междустрочнный интервал office2k
Как задать междустрочный интервал при работе с панелью office2k??? ...

Работа с com портом, компоненты Async pro
Доброго времени суток! У меня такая задача: получить информацию о том, какие...

Работа с Excel
Приветствую, ребята! Подскажите пожалуйста, какими компонентами можно...

2
Lord_Voodoo
Супер-модератор
8611 / 2245 / 133
Регистрация: 07.03.2007
Сообщений: 10,840
Завершенные тесты: 1
12.06.2007, 09:27 2
чтения не знаю, но запись примерно так выглядит:
Код
    DeleteFile("docs\\record.xls");
    TOraQuery* Query1 = new TOraQuery(NULL);
    Query1->Session = DbManager->Session1;
    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT * FROM DOG_DSL WHERE CNT = '" + DSrc->DataSet->FieldByName("CNT")->AsString + "'");
    RangePtr my_range;
    AnsiString r = "";
    TExcelApplication* ExcelApplication1 = new TExcelApplication(NULL);
    TExcelWorkbook* ExcelWorkbook1 = new TExcelWorkbook(NULL);
    TExcelWorksheet* ExcelWorksheet1 = new TExcelWorksheet(NULL);
    try{
      Query1->Open();
      RangePtr my_range;
      char s[16];
      AnsiString r = "";
      // connect to Excel
      ExcelApplication1->Connect();
      // add a workbook
      ExcelApplication1->Workbooks->Add();
      // open the workbook
      ExcelWorkbook1->ConnectTo(ExcelApplication1->Workbooks->get_Item(TVariant(1)));
      ExcelWorkbook1->Activate(0);
      // open the workbook to the first worksheet
      ExcelWorksheet1->ConnectTo(ExcelWorkbook1->Sheets->get_Item(TVariant(1)));
      ExcelWorksheet1->Activate(0);
      // insert field names into the worksheet
      for(int i = 0; i < Query1->FieldCount; i++){
        r = xlRCtoA1(1, i + 1);
        // get the range and iterate through its cells while inserting field names
        my_range = ExcelWorksheet1->get_Range(TVariant("A1"), TVariant(r));
        my_range = my_range->get_Cells()->get_Item(TVariant(1), TVariant(i + 1));
        my_range->set_Value(TVariant(Query1->Fields->Fields[i]->FieldName.c_str()));
      }
      // insert data into the worksheet
      while(!Query1->Eof){
        for(int i = 0; i < Query1->FieldCount; i++){
          r = xlRCtoA1(2, i + 1);
          // get the range and iterate through its cells while inserting data
          my_range = ExcelWorksheet1->get_Range(TVariant("A1"), TVariant(r));
          my_range = my_range->get_Cells()->get_Item(TVariant(2), TVariant(i + 1));
          if(Query1->Fields->Fields[i]->DataType != ftDateTime)
            my_range->set_NumberFormat(TVariant("@"));
          my_range->set_Value(TVariant(Query1->Fields->Fields[i]->AsString.c_str()));
        }
        if(!Query1->Eof)
          Query1->Next();
      }
      Query1->Close();
      ExcelWorksheet1->Disconnect();
      delete ExcelWorksheet1;
      AnsiString S = Application->ExeName.SubString(1, Application->ExeName.LastDelimiter("\\") - 1) + "\\docs\\record.xls";
      // save the workbook with an user-given filename
      ExcelWorkbook1->Close(TVariant(true), TVariant(S), TNoParam(), LOCALE_USER_DEFAULT);
      ExcelWorkbook1->Disconnect();
      delete ExcelWorkbook1;
      // disconnect from Excel
      ExcelApplication1->Quit();
      ExcelApplication1->Disconnect();
      delete ExcelApplication1;
    }catch(...){}
    delete Query1;


//---------------------------------------------------------------------------
AnsiString xlRCtoA1(int ARow, int ACol, bool RowAbsolute, bool ColAbsolute)
{
  int A1 = CHAR('A') - 1;  // номер "A" минус 1 (65 - 1 = 64)
  int AZ = CHAR('Z') - A1; // кол-во букв в англ. алфавите (90 - 64 = 26)
  int t, m;
  AnsiString S; // чтоб экономить память IV=256 последний столбец
  // номер колонки
  t = div(ACol, AZ).quot; // целая часть
  m = div(ACol, AZ).rem; // остаток?
  if(m == 0) t--;
  if (t > 0) S = AnsiString(CHAR(A1 + t)); else S = "";
  if(m == 0) t = AZ; else t = m;
  S = S + Char(A1 + t);
  // весь адрес
  if(ColAbsolute) S = "$" + S;
  if(RowAbsolute) S = S + "$";
  S = S + IntToStr(ARow);
  return S;
}
//---------------------------------------------------------------------------
0
Dr.Brain
0 / 0 / 0
Регистрация: 26.05.2007
Сообщений: 3
12.06.2007, 12:43  [ТС] 3
Ну друг спасибо и на этом. Очень помогло! Respect!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2007, 12:43

Работа с Excel
Добрый вечер))) столкнулся с такой проблемой. выгружаю данные в Excel из...

Работа с Excel из C++
Вообщем VB мне не понравился, если кто то может помочь как работать в C/C++ в...

Работа из c++ с файлами Excel
Товарищи программисты, поделитесь пожалуйста умной книжкой в которой толком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru