Доступ и управление листами MS Excel с Delphi

В этом пошаговом руководстве описывается, как подключиться к Microsoft Excel, получить данные листа и включить редактирование данных с помощью DBGrid. Вы также найдете список наиболее распространенных ошибок, которые могут возникнуть в процессе, а также способы их устранения.

Что покрыто ниже:

  • Методы для передачи данных между Excel и Delphi. Как подключиться к Excel с АДО (Объекты данных ActiveX) и Delphi.
  • Создание редактора электронных таблиц Excel с использованием Delphi и ADO
  • Извлечение данных из Excel. Как ссылаться на таблицу (или диапазон) в книге Excel.
  • Обсуждение типов полей (столбцов) в Excel
  • Как изменить листы Excel: редактировать, добавлять и удалять строки.
  • Перенос данных из приложения Delphi в Excel. Как создать лист и заполнить его пользовательскими данными из базы данных MS Access.

Как подключиться к Microsoft Excel

Microsoft Excel - мощный калькулятор электронных таблиц и инструмент анализа данных. Поскольку строки и столбцы рабочего листа Excel тесно связаны со строками и столбцами таблицы базы данных, многие разработчики считают целесообразным переносить свои данные в рабочую книгу Excel для целей анализа; и восстановить данные обратно в приложение впоследствии.

instagram viewer

Наиболее часто используемый подход к обмену данными между вашим приложением и Excel автоматизация. Автоматизация предоставляет способ чтения данных Excel с использованием объектной модели Excel для погружения в рабочую таблицу, извлечения ее данных и отображения их внутри сеткообразного компонента, а именно DBGrid или StringGrid.

Автоматизация дает вам максимальную гибкость для поиска данных в рабочей книге, а также возможность форматировать рабочий лист и выполнять различные настройки во время выполнения.

Для передачи ваших данных в и из Excel без автоматизации вы можете использовать другие методы, такие как:

  • Записать данные в текстовый файл с разделителями-запятыми и позволить Excel разобрать файл в ячейки
  • Передача данных с использованием DDE (динамический обмен данными)
  • Переносите свои данные на рабочий лист и обратно с помощью ADO

Передача данных с помощью ADO

Поскольку Excel совместим с JET OLE DB, вы можете подключиться к нему с помощью Delphi с помощью ADO (dbGO или AdoExpress), а затем получить данные рабочего листа в набор данных ADO, выполнив запрос SQL (точно так же, как вы бы открыли набор данных для любой базы данных стол).

Таким образом, все методы и функции объекта ADODataset доступны для обработки данных Excel. Другими словами, использование компонентов ADO позволяет создать приложение, которое может использовать книгу Excel в качестве базы данных. Другим важным фактом является то, что Excel является вне процесса Сервер ActiveX. ADO работает в процессе и экономит накладные расходы на дорогостоящие внепроцессные вызовы.

Когда вы подключаетесь к Excel с помощью ADO, вы можете обмениваться необработанными данными только с рабочей книгой. Соединение ADO нельзя использовать для форматирования листа или реализации формул для ячеек. Однако, если вы перенесете свои данные на предварительно отформатированный лист, формат сохранится. После вставки данных из приложения в Excel вы можете выполнить любое условное форматирование с помощью (предварительно записанного) макроса на листе.

Вы можете подключиться к Excel с помощью ADO с помощью двух поставщиков OLE DB, которые являются частью MDAC: Microsoft OLE DB Provider или Microsoft OLE DB Provider для драйверов ODBC. Мы сосредоточимся на Jet OLE DB Provider, который можно использовать для доступа к данным в книгах Excel через устанавливаемые драйверы Indexed Sequential Access Method (ISAM).

Чаевые: Увидеть Курс для начинающих в Delphi Программирование базы данных ADO, если вы новичок в ADO.

Волшебство Строка Связи

Свойство ConnectionString сообщает ADO, как подключиться к источнику данных. Значение, используемое для ConnectionString, состоит из одного или нескольких аргументов, которые ADO использует для установления соединения.

В Delphi компонент TADOConnection инкапсулирует объект соединения ADO; он может совместно использоваться несколькими компонентами набора данных ADO (TADOTable, TADOQuery и т. д.) через их свойства подключения.

Для подключения к Excel допустимая строка подключения включает только две дополнительные части информации - полный путь к книге и версию файла Excel.

Допустимая строка подключения может выглядеть так:

ConnectionString: = 'Provider = Microsoft. Jet. OLEDB.4.0; Источник данных = C: \ MyWorkBooks \ myDataBook.xls; Расширенные свойства = Excel 8.0; ';

При подключении к формату внешней базы данных, поддерживаемому Jet, необходимо установить расширенные свойства для подключения. В нашем случае при подключении к базе данных Excel расширенные свойства используются для установки версии файла Excel.

Для книги Excel95 это значение «Excel 5.0» (без кавычек); используйте «Excel 8.0» для Excel 97, Excel 2000, Excel 2002 и ExcelXP.

Важный: Вы должны использовать Поставщик Jet 4.0, так как Jet 3.5 не поддерживает драйверы ISAM. Если вы установите Jet Provider на версию 3.5, вы получите ошибку «Не удалось найти устанавливаемый ISAM».

Другое расширенное свойство Jet - "HDR =". «HDR = Да» означает, что в диапазоне есть строка заголовка, поэтому Jet не будет включать первую строку выбора в набор данных. Если указано «HDR = Нет», то поставщик включит первую строку диапазона (или именованный диапазон) в набор данных.

Первая строка в диапазоне по умолчанию считается строкой заголовка («HDR = Да»). Поэтому, если у вас есть заголовок столбца, вам не нужно указывать это значение. Если у вас нет заголовков столбцов, вам нужно указать «HDR = No».

Теперь, когда все готово, это часть, где вещи становятся интересными, так как мы теперь готовы к некоторому коду. Давайте посмотрим, как создать простой редактор таблиц Excel с использованием Delphi и ADO.

Замечания: Вы должны продолжить, даже если вам не хватает знаний о программировании ADO и Jet. Как вы увидите, редактировать книгу Excel так же просто, как редактировать данные из любой стандартной базы данных.

instagram story viewer