Использование MFC для автоматизации Excel 2000 и Excel 2002 и извлечение данных из диапазона в Excel 2000 и Excel 2002

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:186122
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В данной статье описывается способ автоматизации Microsoft Excel и возвращения значений из многоячеечного диапазона в массив.
Дополнительная информация
Для возвращения значения из многоячеечного диапазона без запросы по одной ячейки, следует использовать функцию-член GetValue Объект Range для возвращения значений типа VARIANT. Затем постройте SAFEARRAY в зависимости от типа VARIANT, возвращенного GetValue. После получения SAFEARRAY, можно использовать элементы с помощью GetElement. Следующие шаги демонстрируют Этот процесс и продемонстрировать, каким образом можно получить доступ строковые и числовые элементы.

Заметки по автоматизации Microsoft Excel 2000 и 2002

В примере кода в этой статье используется класс обертки создан из библиотеки объектов Excel 97 (Excel 8.olb). С незначительными изменениями это код может применяться для клиента автоматизации, использующего класс обертки для Excel 2000 (Excel9.olb) или Microsoft Excel 2002 (Excel.olb). Для получения дополнительных сведений об использовании пример кода, описанные в этой статье с Microsoft Excel 2000 или 2002 Библиотека типов, обратитесь к статье в База знаний корпорации Майкрософт:
224925 ИНФОРМАЦИЯ: Библиотеки типов для Office могут измениться с выпуском

Действия по созданию проекта

  1. В Microsoft Excel создайте новую книгу. Заполнение ячеек A1:C8 с сочетанием строковые и числовые данные. Сохранить книгу как «c:\test.xls» и выход из Microsoft Excel.
  2. Выполните шаги 1-12 в следующей статье в Чтобы создать пример проекта, который использует интерфейс IDispatch знаний интерфейсы и функции элементов, определенных в библиотеке типов Excel8.olb:
    178749Создание проекта автоматизации с использованием MFC и библиотеки типов
  3. В верхней части файла AutoProjectDlg.cpp, добавление Следующая строка:
          #include "excel8.h"					
  4. Добавьте следующий код к CAutoProjectDlg::OnRun() в Файл AutoProjectDlg.cpp:

    Пример кода

          // OLE Variant for Optional.      COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);      _Application objApp;      _Workbook objBook;      Workbooks objBooks;      Worksheets objSheets;      _Worksheet objSheet;      Range objRange;      VARIANT ret;      // Instantiate Excel and open an existing workbook.      objApp.CreateDispatch("Excel.Application");      objBooks = objApp.GetWorkbooks();      objBook = objBooks.Open("C:\\Test.xls",                VOptional, VOptional, VOptional, VOptional,                VOptional, VOptional, VOptional, VOptional,                VOptional, VOptional, VOptional, VOptional);      objSheets = objBook.GetWorksheets();      objSheet = objSheets.GetItem(COleVariant((short)1));      //Get the range object for which you wish to retrieve the      //data and then retrieve the data (as a variant array, ret).      objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C8"));      ret = objRange.GetValue();      //Create the SAFEARRAY from the VARIANT ret.      COleSafeArray sa(ret);      //Determine the array's dimensions.      long lNumRows;      long lNumCols;      sa.GetUBound(1, &lNumRows);      sa.GetUBound(2, &lNumCols);      //Display the elements in the SAFEARRAY.      long index[2];      VARIANT val;      int r, c;      TRACE("Contents of SafeArray\n");      TRACE("=====================\n\t");      for(c=1;c<=lNumCols;c++)      {         TRACE("\t\tCol %d", c);      }      TRACE("\n");      for(r=1;r<=lNumRows;r++)      {         TRACE("Row %d", r);         for(c=1;c<=lNumCols;c++)         {            index[0]=r;            index[1]=c;            sa.GetElement(index, &val);            switch(val.vt)            {            case VT_R8:               {                  TRACE("\t\t%1.2f", val.dblVal);                  break;               }            case VT_BSTR:               {                  TRACE("\t\t%s",(CString)val.bstrVal);                  break;               }            case VT_EMPTY:               {                  TRACE("\t\t<empty>");                  break;               }            }         }         TRACE("\n");      }      //Close the workbook without saving changes      //and quit Microsoft Excel.      objBook.Close(COleVariant((short)FALSE), VOptional, VOptional);      objApp.Quit();					
  5. Скомпилируйте проект и запустите его.
  6. Нажмите кнопку выполнить. Значения в ячейках A1:C8, отображаются в Окно вывода.
Ссылки
Для получения дополнительных сведений об автоматизации Microsoft Excel Использование MFC, щелкните следующий номер статьи для просмотра статьи в База знаний корпорации Майкрософт:
186120 Использование MFC для автоматизации Excel и заполнение диапазона ячеек с массивом
184663 Как внедрить и автоматизировать лист Microsoft Excel с MFC
179706 Использование MFC для автоматизации Excel и создания и форматирования новой книги
178781Методические УКАЗАНИЯ: Автоматизация Excel с помощью MFC и функции
178783Использование MFC для создания диаграммы Microsoft Excel
167668Способ передачи SafeArray строки в тип VARIANT *

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 186122 — последний просмотр: 12/05/2015 08:42:08 — редакция: 5.0

Microsoft Excel 2000 Standard Edition, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Excel 2002 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbnosurvey kbarchive kbprogramming kbfunctions kbautomation kbhowto kbinterop kbmt KB186122 KbMtru
Отзывы и предложения