Delphi ado and excel

Здравствуйте, в этой статье я расскажу Вам, как использовать в своем приложении (программе) на Delphi БД в виде MS Excel. Да да именно MS Excel. Тут ничего сложного нету. Для начала давайте заполним наш лист в MS Excel. Первая строка в каждом столбце всегда будет брать наше приложение как название столбцов, то есть оно не берет название столбцов такое — A, B, C и так далее. Так что в первсой строке столбца А и столбца B я написал ФИО и Оценка соответственно для каждого столбца. Это и будут наши заголовки, затем ниже я заполнил данные, которые будут в моей БД, ну это фамилии и оценки сами напиши. Так БД у нас готова. Теперь создадим к ней подключение. создается подключение похоже как и в MS Access, так что тут ничего сложного нету. На форме у нас старые компоненты это

  • TDBGrid
  • TADOQuery
  • TADOConnection
  • TDataSource

Как связывать эти компоненты я расскажу быстро, так как это уже было сказано мною.

  • TADOQuery c TADOConnection в свойстве — Connection
  • TDataSource с TADOQuery в свойстве DataSet
  • TDBGrid c TDataSource в свойстве DataSource

В TADOConnection установим свойство LongPromt в False. Вроде бы небольшую настройку сделали. Теперь приходим к непосредственному подключени. В свойстве TADOConnection ConnectionString нажимаем на кнопку ««, далее у нас появляется окно вида

Нажимаем на кнопку «Build…» и появляется следующее окно

В данном окне выбираем следующего провайдера: Microsoft OLE DB Provider for ODBC Drivers и нажимаем кнопку «Далее>>» и видем следующее окно

В этом окне сразу ставим указатель на «Использовать строку подключения» и нажимаем на кнопку «Сборка«, после чего появляется окно

В этом окне переходим на вкладку Источник данных компьютера, в появившемся списке выбираем — Файлы Excel, а точнее жмем левой кнопкой мыши по этой сроке двойным щелчком и в появившемся окне указываем путь к нашей Excel-книги, которую мы создавали. После этого нажимаем на пноку «Ok«. Все подключение у нас готово. Хочу добавить еще, если у Вас файл Excel, где ваша таблица находится лежит в одном каталоге с программой, то в свойстве компонента TADOConnection ConnectionString будет прописан путь к Вашему Excel-файлу, стерите путь, а оставьте просто имя Вашего Excel файла с расширением, а в свойстве DefaultDataBase этого же компонента, напишите имя вашего Excel-файла с расширением. Тогда при запуске вашего приложения, не будет возникать ошибок с неправильно заданым путем к вашей БД. Далее в TDBGrid нажмем по нему двойным щелчком и в появившемся окне создаим 2 строки, это наши столбцы будут. А создаются они путем нжатия в данном окне на кнопку «Add New (Ins)«. Далее выделив кажду строку в свойстве FieldName для первой строки напишем — ФИО, так как в Excel-файле я именно так написал в первую строку название столбца (для ячейки A1 я так написал), а выделив вторую строку, что создали в TDBGrid, в свойстве FieldName напишем — Оценка, так как именно я такое название столбца написал (в ячейке А2 я так написал). Все теперь нам можно активировать наши данные. Для этого на событие главной формы — OnCreate напишем следующее

procedure TForm1.FormCreate(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$]');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Как видите все тот же запрос, только вместо имя таблица, как у нас было в MS Access мы указываем имя листа нашего в Excel, заключив его в квадратные скобки и поставив в конце знак $. Как видите ничего сложного нету. В следующей статье про БД MS Excel я расскажу как вставлять данные, редактировать и так далее.

This step-by-step guide describes how to connect to Microsoft Excel, retrieve sheet data, and enable editing of the data using the DBGrid. You’ll also find a list of the most common errors that might appear in the process, plus how to deal with them.

What’s Covered Below:

  • Methods for transferring data between Excel and Delphi. How to connect to Excel with ADO (ActiveX Data Objects) and Delphi.
  • Creating an Excel spreadsheet editor using Delphi and ADO
  • Retrieving the data from Excel. How to reference a table (or range) in an Excel workbook.
  • A discussion on Excel field (column) types
  • How to modify Excel sheets: edit, add and delete rows.
  • Transferring data from a Delphi application to Excel. How to create a worksheet and fill it with custom data from an MS Access database.

How to Connect to Microsoft Excel

Microsoft Excel is a powerful spreadsheet calculator and data analysis tool. Since rows and columns of an Excel worksheet closely relate to the rows and columns of a database table, many developers find it appropriate to transport their data into an Excel workbook for analysis purposes; and retrieve data back to the application afterwards.

The most commonly used approach to data exchange between your application and Excel is Automation. Automation provides a way to read Excel data using the Excel Object Model to dive into the worksheet, extract its data, and display it inside a grid-like component, namely DBGrid or StringGrid.

Automation gives you the greatest flexibility for locating the data in the workbook as well as the ability to format the worksheet and make various settings at run time.

To transfer your data to and from Excel without Automation, you can use other methods such as:

  • Write data into a comma-delimited text file, and let Excel parse the file into cells
  • Transfer data using DDE (Dynamic Data Exchange)
  • Transfer your data to and from a worksheet using ADO

Data Transfer Using ADO

Since Excel is JET OLE DB compliant, you can connect to it with Delphi using ADO (dbGO or AdoExpress) and then retrieve the worksheet’s data into an ADO dataset by issuing an SQL query (just like you would open a dataset against any database table).

In this way, all the methods and features of the ADODataset object are available to process the Excel data. In other words, using the ADO components let you build an application that can use an Excel workbook as the database. Another important fact is that Excel is an out-of-process ActiveX server. ADO runs in-process and saves the overhead of costly out-of-process calls.

When you connect to Excel using ADO, you can only exchange raw data to and from a workbook. An ADO connection cannot be used for sheet formatting or implementing formulas to cells. However, if you transfer your data to a worksheet that is pre-formatted, the format is maintained. After the data is inserted from your application to Excel, you can carry out any conditional formatting using a (pre-recorded) macro in the worksheet.

You can connect to Excel using ADO with the two OLE DB Providers that are a part of MDAC: Microsoft Jet OLE DB Provider or Microsoft OLE DB Provider for ODBC Drivers. We’ll focus on Jet OLE DB Provider, which can be used to access data in Excel workbooks through installable Indexed Sequential Access Method (ISAM) drivers.

Tip: See the Beginners Course to Delphi ADO Database Programming if you’re new to ADO.

The ConnectionString Magic

The ConnectionString property tells ADO how to connect to the datasource. The value used for ConnectionString consists of one or more arguments ADO uses to establish the connection.

In Delphi, the TADOConnection component encapsulates the ADO connection object; it can be shared by multiple ADO dataset (TADOTable, TADOQuery, etc.) components through their Connection properties.

In order to connect to Excel, a valid connection string involves only two additional pieces of information — the full path to the workbook and the Excel file version.

A legitimate connection string could look like this:

ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:MyWorkBooksmyDataBook.xls;Extended Properties=Excel 8.0;';

When connecting to an external database format supported by the Jet, the extended properties for the connection needs to be set. In our case, when connecting to an Excel «database,» extended properties are used to set the Excel file version. 

For an Excel95 workbook, this value is «Excel 5.0» (without the quotes); use «Excel 8.0» for Excel 97, Excel 2000, Excel 2002, and ExcelXP.

Important: You must use the Jet 4.0 Provider since Jet 3.5 does not support the ISAM drivers. If you set the Jet Provider to version 3.5, you’ll receive the «Couldn’t find installable ISAM» error.

Another Jet extended property is «HDR=». «HDR=Yes» means that there is a header row in the range, so the Jet will not include the first row of the selection into the dataset. If «HDR=No» is specified, then the provider will include the first row of the range (or named range) into the dataset.

The first row in a range is considered to be the header row by default («HDR=Yes»). Therefore, if you have column heading, you do not need to specify this value. If you do not have column headings, you need to specify «HDR=No».

Now that you’re all set, this is the part where things become interesting since we’re now ready for some code. Let’s see how to create a simple Excel Spreadsheet editor using Delphi and ADO.

Note: You should proceed even if you lack knowledge on ADO and Jet programming. As you’ll see, editing an Excel workbook is as simple as editing data from any standard database.

Содержание

  1. Работа с ADO в Delphi на примере БД MS Excel. Часть 2
  2. Editing Excel Sheets With Delphi and ADO
  3. How to Connect to Microsoft Excel
  4. Data Transfer Using ADO
  5. The ConnectionString Magic
  6. Excel через ado delphi
  7. Работа с ADO в Delphi на примере БД MS Excel. Часть 2

Работа с ADO в Delphi на примере БД MS Excel. Часть 2

Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удаление, ну с удалением мы что-нибудь подумаем. Сразу хочу сказать, что необходимо еще одно поле в нашей Excel-книги — id, и нам придется вручную его заполнять, что не есть хорошо, но ничего тут сложного нету, просто при инициализации данных, мы просто получаем количество записей в нашей БД, а затем при добавлении добавляем это значение в поле id. Вот и у нас будет получаться уникальное значение, что поможет нам при редактировании. Тут как всегда, думаю что писать на OnCreate нашей главной формы понятно, обычный запрос, только затем еще необходимо получить количество записей в нашей БД, что мы делаем с помощью RecordCount. Смотрим код события OnCreate формы ниже

Для добавления данных все тоже самое, что и было в ADO с MS Access, только здесб повторюсь надо учитывать id вручную нам, в а MS Access все было подругому, там был счетчик, что облегчало нам работу. Код добавления смотрим ниже

Ну я тут еще сделал дополнительный запрос, для обновления данных в TDBGrid.Для редактирования данных нам надо получить сначала id, для этого на событие компонента TDBGridOnCellClick напишем

У меня id поле находится в книге Excel в 3 столбце, но так как нумерация в ADO столбцов начинается с 0, то я указал Fields[2]. Для редактирования данных применим туже технологию, что и в случае с MS Access

И также как видем, дополнительный запрос на обновления данных, id у нас уже получен, так что все обновиться. Да и не забыли ведь, что в комоненте TADOQuery задайте в свойстве Parameters новый параметр — pid с типом данных ftInteger. Ну и наконец-то попробуем какой-нибудь не большой поиск организовать, здесь я использовал параметр SQL-запроса — LIKE, то есть найдет все записи с совпадениями, что мы указываем. Смотрим код ниже

Можно организовать поиск по полному совпадению просто через WHERE, но пока что так. Теперь понимаете, что использовать MS Excel в качестве БД тут не логично, много чего вручную контролировать нужно, ограниченное количество записей, да и с удалением проблемы, но зато отлично тут можно написать конвертацией данных, а также экспорт в Excel например или в MS Access из MS Excel. Но мы пока что займемся экспортом в Excel, а затем напишем свой конвертатор. Но это в следующий частях про MS Excel как БД в Delphi.

Источник

Editing Excel Sheets With Delphi and ADO

Methods for Transferring Data Between Excel and Delphi

This step-by-step guide describes how to connect to Microsoft Excel, retrieve sheet data, and enable editing of the data using the DBGrid. You’ll also find a list of the most common errors that might appear in the process, plus how to deal with them.

What’s Covered Below:

  • Methods for transferring data between Excel and Delphi. How to connect to Excel with ADO (ActiveX Data Objects) and Delphi.
  • Creating an Excel spreadsheet editor using Delphi and ADO
  • Retrieving the data from Excel. How to reference a table (or range) in an Excel workbook.
  • A discussion on Excel field (column) types
  • How to modify Excel sheets: edit, add and delete rows.
  • Transferring data from a Delphi application to Excel. How to create a worksheet and fill it with custom data from an MS Access database.

How to Connect to Microsoft Excel

Microsoft Excel is a powerful spreadsheet calculator and data analysis tool. Since rows and columns of an Excel worksheet closely relate to the rows and columns of a database table, many developers find it appropriate to transport their data into an Excel workbook for analysis purposes; and retrieve data back to the application afterwards.

The most commonly used approach to data exchange between your application and Excel is Automation. Automation provides a way to read Excel data using the Excel Object Model to dive into the worksheet, extract its data, and display it inside a grid-like component, namely DBGrid or StringGrid.

Automation gives you the greatest flexibility for locating the data in the workbook as well as the ability to format the worksheet and make various settings at run time.

To transfer your data to and from Excel without Automation, you can use other methods such as:

  • Write data into a comma-delimited text file, and let Excel parse the file into cells
  • Transfer data using DDE (Dynamic Data Exchange)
  • Transfer your data to and from a worksheet using ADO

Data Transfer Using ADO

Since Excel is JET OLE DB compliant, you can connect to it with Delphi using ADO (dbGO or AdoExpress) and then retrieve the worksheet’s data into an ADO dataset by issuing an SQL query (just like you would open a dataset against any database table).

In this way, all the methods and features of the ADODataset object are available to process the Excel data. In other words, using the ADO components let you build an application that can use an Excel workbook as the database. Another important fact is that Excel is an out-of-process ActiveX server. ADO runs in-process and saves the overhead of costly out-of-process calls.

When you connect to Excel using ADO, you can only exchange raw data to and from a workbook. An ADO connection cannot be used for sheet formatting or implementing formulas to cells. However, if you transfer your data to a worksheet that is pre-formatted, the format is maintained. After the data is inserted from your application to Excel, you can carry out any conditional formatting using a (pre-recorded) macro in the worksheet.

You can connect to Excel using ADO with the two OLE DB Providers that are a part of MDAC: Microsoft Jet OLE DB Provider or Microsoft OLE DB Provider for ODBC Drivers. We’ll focus on Jet OLE DB Provider, which can be used to access data in Excel workbooks through installable Indexed Sequential Access Method (ISAM) drivers.

Tip: See the Beginners Course to Delphi ADO Database Programming if you’re new to ADO.

The ConnectionString Magic

The ConnectionString property tells ADO how to connect to the datasource. The value used for ConnectionString consists of one or more arguments ADO uses to establish the connection.

In Delphi, the TADOConnection component encapsulates the ADO connection object; it can be shared by multiple ADO dataset (TADOTable, TADOQuery, etc.) components through their Connection properties.

In order to connect to Excel, a valid connection string involves only two additional pieces of information — the full path to the workbook and the Excel file version.

A legitimate connection string could look like this:

When connecting to an external database format supported by the Jet, the extended properties for the connection needs to be set. In our case, when connecting to an Excel «database,» extended properties are used to set the Excel file version.

For an Excel95 workbook, this value is «Excel 5.0» (without the quotes); use «Excel 8.0» for Excel 97, Excel 2000, Excel 2002, and ExcelXP.

Important: You must use the Jet 4.0 Provider since Jet 3.5 does not support the ISAM drivers. If you set the Jet Provider to version 3.5, you’ll receive the «Couldn’t find installable ISAM» error.

Another Jet extended property is «HDR=». «HDR=Yes» means that there is a header row in the range, so the Jet will not include the first row of the selection into the dataset. If «HDR=No» is specified, then the provider will include the first row of the range (or named range) into the dataset.

The first row in a range is considered to be the header row by default («HDR=Yes»). Therefore, if you have column heading, you do not need to specify this value. If you do not have column headings, you need to specify «HDR=No».

Now that you’re all set, this is the part where things become interesting since we’re now ready for some code. Let’s see how to create a simple Excel Spreadsheet editor using Delphi and ADO.

Note: You should proceed even if you lack knowledge on ADO and Jet programming. As you’ll see, editing an Excel workbook is as simple as editing data from any standard database.

Источник

Excel через ado delphi

В предыдущем посте я рассказывал, как работать с MS Excel из Delphi через ComObj (Com объект).
В этой статье я расскажу, как подключить таблицу MS Excel через компонент ADOConnection в Delphi. Из данной статьи вы сможете узнать о способах данного подключения. Как загрузить данные из таблицы MS Excel в компонент DBGrid. Как создавать и сохранять записи в таблице MS Excel из Delphi.

И так, приступим…

Запустим Delphi и создадим новое приложение File -> New-> VCL Forms Application – Delphi.
Разместим на форме следующие компоненты:
1. Компонент TADOConnection из вкладки dbGo (ADO);
2. Компонент TADOQuery из вкладки dbGo (ADO);
3. Компонент TDataSource из вкладки Data Access;
4. Компонент TDBGrid из вкладки Data Controls;
5. И два компонента TButton из вкладки Standard.

и сохраним ее как 1.xlsx для (MS Excel 2007) или 1.xls для (MS Excel 2003).

Затем настроим компоненты…

Начнем с компонента подключения к базе ADOConnection1. Мы будем подключаться к таблице MS Excel.
В инспекторе объектов для компонента ADOConnection1 выбираем свойство ConnectionString и вписываем туда следующую строку для MS Excel 2007:

Provider =Microsoft.ACE.OLEDB.12.0; Data Source =1.xlsx; Extended Properties =»Excel 12.0 Xml;HDR=YES»;

Файл 1.xlsx должен находиться в папке с приложением.

При указании полного пути до файла:

Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:myFoldermyExcel2007file.xlsx; Extended Properties =»Excel 12.0 Xml;HDR=YES»;

Если у вас MS Excel 2003 то вписываем следующую строку:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties=Excel 8.0;

Файл 1.xls должен находиться в папке с приложением.

Также можно подключиться через мастера подключения, для этого нажимаем:

Находим наш файл и жмем ОК.

Внимание. К сожалению такое подключение возможно только для файлов Excel сохраненных в формате Excel 97-2003 (*.xls), поэтому в моем случае выдаст ошибку.

После установки подключения убираем галочка со свойства LoginPromt, чтоб не запрашивал пароль и переходим к настройке компонента ADOQuery1.

Свойство Connection устанавливаем ADOConnection1;
Свойство SQL —> TString —> пишем запрос SELECT * FROM [Лист1$] ;
Свойство Active—> True.

Переходим к компоненту DataSource1 и устанавливаем ему свойство DataSet — > ADOQuery1.
Переходим к компоненту DBGrid1 и устанавливаем ему свойство DataSource—> DataSource1.
После данных настроек, если вы все сделали правильно в DBGrid должны отобразиться поля вашей таблицы. Чтобы изменить размер отображаемых полей в Structure выбираем:

Внимание. Перед запуском на выполнение, необходимо убрать галочки у компонента ADOConnection1 — >Connected и у компонента ADOQuery —> Active иначе будут сыпаться ошибки, типа не могу подключиться, так как подключение уже используется.

Дело движется к концу. Осталось только написать обработчики событий для кнопок (назовем их «Новая запись» и «Сохранить» соответственно). Начнем…

Для события OnClick кнопки «Сохранить» пишем следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Edit;
ADOQuery1.Post;
end;

Для события OnClick кнопки «Новая запись» пишем следующий код:

procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.Append;
end;

И для события OnCreate формы пишем:

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected:=true;
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(‘SELECT * FROM [Лист1$]’);
ADOQuery1.Active:=True;
end;

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

Спасибо за внимание.

Скачать исходники к статье можно здесь.

Источник

Работа с ADO в Delphi на примере БД MS Excel. Часть 2

Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удаление, ну с удалением мы что-нибудь подумаем. Сразу хочу сказать, что необходимо еще одно поле в нашей Excel-книги — id, и нам придется вручную его заполнять, что не есть хорошо, но ничего тут сложного нету, просто при инициализации данных, мы просто получаем количество записей в нашей БД, а затем при добавлении добавляем это значение в поле id. Вот и у нас будет получаться уникальное значение, что поможет нам при редактировании. Тут как всегда, думаю что писать на OnCreate нашей главной формы понятно, обычный запрос, только затем еще необходимо получить количество записей в нашей БД, что мы делаем с помощью RecordCount. Смотрим код события OnCreate формы ниже

Для добавления данных все тоже самое, что и было в ADO с MS Access, только здесб повторюсь надо учитывать id вручную нам, в а MS Access все было подругому, там был счетчик, что облегчало нам работу. Код добавления смотрим ниже

Ну я тут еще сделал дополнительный запрос, для обновления данных в TDBGrid.Для редактирования данных нам надо получить сначала id, для этого на событие компонента TDBGridOnCellClick напишем

У меня id поле находится в книге Excel в 3 столбце, но так как нумерация в ADO столбцов начинается с 0, то я указал Fields[2]. Для редактирования данных применим туже технологию, что и в случае с MS Access

И также как видем, дополнительный запрос на обновления данных, id у нас уже получен, так что все обновиться. Да и не забыли ведь, что в комоненте TADOQuery задайте в свойстве Parameters новый параметр — pid с типом данных ftInteger. Ну и наконец-то попробуем какой-нибудь не большой поиск организовать, здесь я использовал параметр SQL-запроса — LIKE, то есть найдет все записи с совпадениями, что мы указываем. Смотрим код ниже

Можно организовать поиск по полному совпадению просто через WHERE, но пока что так. Теперь понимаете, что использовать MS Excel в качестве БД тут не логично, много чего вручную контролировать нужно, ограниченное количество записей, да и с удалением проблемы, но зато отлично тут можно написать конвертацией данных, а также экспорт в Excel например или в MS Access из MS Excel. Но мы пока что займемся экспортом в Excel, а затем напишем свой конвертатор. Но это в следующий частях про MS Excel как БД в Delphi.

Источник

Категории раздела
Delphi
[12]

Материалы, связанные с программирование на Delphi

Статистика


Онлайн всего: 1

Гостей: 1

Пользователей: 0

Тиц

Главная » 2011 » Октябрь » 2 » Учимся работать с MS Excel через подключение ADOConnection в Delphi.


13:11

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.      В предыдущем посте я рассказывал,  как работать с MS Excel из Delphi через ComObj (Com объект).
В этой статье я расскажу, как подключить таблицу  MS Excel через компонент ADOConnection в Delphi. Из данной статьи вы сможете узнать о способах данного подключения. Как загрузить данные из таблицы  MS Excel в компонент DBGrid. Как  создавать и сохранять записи в таблице MS Excel из Delphi.

И так, приступим…

Запустим Delphi и создадим новое приложение File -> New-> VCL Forms Application – Delphi.
Разместим на форме следующие компоненты:
1. Компонент  TADOConnection из вкладки dbGo (ADO);
2. Компонент  TADOQuery из вкладки dbGo (ADO);
3. Компонент  TDataSource из вкладки Data Access;
4. Компонент  TDBGrid  из вкладки Data Controls;
5. И два компонента TButton из вкладки Standard.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Далее создадим таблицу  MS Excel со следующими полями:

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

и сохраним ее как 1.xlsx для (MS Excel 2007) или 1.xls для (MS Excel 2003).

Затем настроим компоненты…

Начнем с  компонента подключения к базе ADOConnection1. Мы будем подключаться к таблице MS Excel.
В инспекторе объектов для компонента ADOConnection1 выбираем свойство ConnectionString и вписываем туда следующую строку для MS Excel 2007:

Provider =Microsoft.ACE.OLEDB.12.0; Data Source =1.xlsx; Extended Properties =»Excel 12.0 Xml;HDR=YES»;

Файл 1.xlsx должен находиться в папке с приложением.

При указании полного пути до файла:

Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:myFoldermyExcel2007file.xlsx; Extended Properties =»Excel 12.0 Xml;HDR=YES»;

Если у вас  MS Excel 2003 то вписываем  следующую строку:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties=Excel 8.0;

Файл 1.xls должен находиться в папке с приложением.

Также можно подключиться через мастера подключения, для этого нажимаем:

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

выбираем «Использовать строку подключения» -> Сборка…

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Выбираем «Источник данных компьютера» — > «Файлы Excel» — > и нажимаем на пункте дважды левой кнопкой мыши.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Находим наш файл и жмем ОК.

Внимание!!! К сожалению такое подключение возможно только для файлов Excel сохраненных в формате Excel 97-2003 (*.xls), поэтому в моем случае выдаст ошибку.

После установки подключения убираем галочка со свойства LoginPromt, чтоб не запрашивал пароль и переходим к настройке компонента ADOQuery1.

Свойство Connection устанавливаем ADOConnection1;
Свойство SQL —> TString —> пишем запрос  SELECT * FROM [Лист1$] ;
Свойство Active—> True.

Переходим к компоненту DataSource1 и устанавливаем ему свойство DataSet — > ADOQuery1.
Переходим к компоненту DBGrid1 и устанавливаем ему свойство DataSource—> DataSource1.
После данных настроек, если вы все сделали правильно в DBGrid должны отобразиться поля вашей таблицы. Чтобы изменить размер отображаемых полей в Structure выбираем:

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

И для всех добавленных полей изменяем свойство DisplayWidth —>20.
Должно получиться следующее:

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Внимание!!! Перед запуском на выполнение, необходимо убрать галочки у компонента ADOConnection1 — >Connected  и у компонента ADOQuery —> Active иначе будут сыпаться ошибки, типа не могу подключиться, так как подключение уже используется.

Дело движется к концу. Осталось только написать обработчики событий для кнопок (назовем их «Новая запись» и «Сохранить» соответственно).  Начнем…

Для события OnClick кнопки «Сохранить» пишем следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Edit;
ADOQuery1.Post;
end;

Для события OnClick кнопки «Новая запись» пишем следующий код:

procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.Append;
end;

И для события OnCreate формы пишем:

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected:=true;
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(‘SELECT * FROM [Лист1$]’);
ADOQuery1.Active:=True;
end;

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

  • 1
  • 2
  • 3
  • 4
  • 5

Категория: Delphi |
Просмотров: 34922 |
Добавил: xaramamburu

| Рейтинг: 5.0/2

Всего комментариев: 11

Порядок вывода комментариев:



0



Подскажите, а если у меня  книге присутствует график,  то он будет выводиться при подключении всей книги целиком или его отдельно выводить надо в дельфи 7?



0



Здраствуйте, у меня в источниках данных компьютера нет пункта Файлы Excel, использую delphi XE



1

Наверное поэтому у вас и не работает. Попробуйте создать источник данных. Нажмите кнопку создать и выберите драйвер Excel. Может поможет. У меня нет Delphi XE и пункт Файлы Excel у меня был сразу, поэтому особо помочь я вам не могу.))))))))



0



С этим разобрался, но пишет теперь «В операции должен быть использован обновляемый запрос», исходники урока работают нормально
P.S. Ваш сайт мне очень помог разобраться в написании программ баз данных. Спасибо вам smile

При сохранении новой записи выдает ошибку «[Microsoft][Драйвер ODBC Excel] В операции должен быть использован обновляемый запрос»
Думал я где то накасячел, скачал исходник но и в исходнике та же проблема.

Подскажите как исправить?
P.S. Использую Delphi XE2



0

К сожалению у меня нет Delphi XE2 и протестировать работу на ней я не могу. Но под Delphi 2010, система Windows Vista, MS Office 2007 все работает, единственное, что выдает ошибку при сохранении пустой строки т.к. не сделана соответствующая проверка. Работает ли у вас скомпилированный exe файл из исходников? Его проверял под Windows 7 — все работало. Если не работает — попробуйте на другом компьютере, возможно что-то с системой?)))))))))



0



У меня такая же проблема….однако в исходниках все работает



1

Огромное спасибо вам за труд человеческий! Более подробной информации кроме как у вас я нигде не находил! Спасибо! Все работает)



2

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



0

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



0

Ура! Разобрался!

Добавлять комментарии могут только зарегистрированные пользователи.

[

Регистрация

|

Вход

]

Календарь
«  Октябрь 2011  »
Пн Вт Ср Чт Пт Сб Вс
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Получить доступ, отображение и
редактирование данных Excel возможно так же при помощи технологии ADO (ADO
ActiveX Data Object)
и Delphi.

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

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

Итак, необходимо решить следующие задачи:

·        
получить методы передачи данных между Excel<->
Delphi при помощи ADO;

·        
редактирование страницы Excel;

·        
получение данных из Excel. Как связать таблицу
данных с WorkBook Excel;

·        
определение типов полей (колонок) в Excel
странице;

·        
передача данных из Delphi приложения в Excel.

Подключение к MS Excel

При работе с Excel через ADO происходит
обмен данных по аналогии с таблицей из базы данных. Для подключения необходимо
использовать компонент AdoConnection и свойство connection string.
Строка подключения в данном свойстве зависит от версии Excel, формата данных и для формата .xls будет выглядеть следующим
образом:

 
strConn:=’Provider=Microsoft.Jet.OLEDB.4.0;’
+  ‘Data Source=’ +’MyFile.xls ‘+ ‘;’ +
‘Extended Properties=Excel 8.0;’;

Процедуру подключения к выбранному файлу можно реализовать
следующим образом:

procedure TForm1.ConnectToExcel;

var strConn : 
widestring;

begin

 
strConn:=’Provider=Microsoft.Jet.OLEDB.4.0;’ +

          
‘Data Source=’ + FileListBox1.FileName + ‘;’ +

           ‘Extended
Properties=Excel 8.0;’;

 
AdoConnection1.Connected:=False;

 
AdoConnection1.ConnectionString:=strConn;

    try

   
AdoConnection1.Open;

   
AdoConnection1.GetTableNames(ComboBox1.Items,True);

  except

   
ShowMessage(‘Не получается подключиться к файлу ‘ +
FileListBox1.FileName);

    raise;

 
end;

end;(*ConnectToExcel*)

При этом имена страниц книги помещаются в компонент Combobox1.

Управление данными

Выборка данных происходит на основе SQL запроса:

SELECT * FROM [Sheet1]

Sheet1 – имя страницы для
выборки.

Проверка подключения к
таблице с данными и выборку можно произвести при помощи TadoQuery

 
if not AdoConnection1.Connected then
ConnectToExcel;

 
AdoQuery1.Close;

 
AdoQuery1.SQL.Text:=Edit1.Text;

  try

   
AdoQuery1.Open;

  except

   
ShowMessage(‘
Ошибка!’);

    raise;

 
end;

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

ADOQuery1.First;

Edit2.Text:=ADOQuery1.FieldByName(ADOQuery1.Fields[1].FieldName).AsString;

ADOQuery1.Edit;

ADOQuery1.FieldByName(ADOQuery1.Fields[1].FieldName).AsString:=Edit2.Text+’!’;

ADOQuery1.Post;

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

Понравилась статья? Поделить с друзьями:
  • Delete the table in word
  • Delete the comments in excel
  • Delete text in word
  • Delphi 2010 word 2010
  • Delete table in microsoft word