Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Импорт Excel в Delphi. Не получается [D7, XP]


Страницы:   1 2

M@g ©   (2010-09-01 15:19:00) 

Добрый день, мастера!

Пытаюсь импортировать данные из Excel-файла в Dbgrid
Исходные данные: TTable, DataSource, Dbgrid и сам Excel-файл

Код:

var XML: variant;//ïðèëîæåíèå Excel
  i,index:integer;
begin
 OpenDialog1.DefaultExt := '.xls';   // ïîëüçîâàòåëü âûáèðàåò ôàéë äëÿ èìïîðòà äàííûõ
 OpenDialog1.Filter := 'Excel (*.xls)|*.xls';
 if OpenDialog1.Execute then
 begin
 XML:=CreateOLEObject('Excel.Application');
 XML.Visible:=False;
 XML.Workbooks.Open(OpenDialog1.FileName);
 i:=XML.ActiveSheet.UsedRange.Rows.Count; //êîëè÷åñòâî ñòðîê â òàáëèöå
for index:=2 to i do
begin

  Table1.insert;
  Table1.Fields[0].Value:=XML.Sheets[1].cells[index,1].Text;
  Table1.Fields[1].value:=XML.Sheets[1].cells[index,2].Text;
  Table1.Fields[2].Value:=XML.Sheets[1].cells[index,3].Text;
  Table1.Fields[3].Value:=XML.Sheets[1].cells[index,4].Text;
  Table1.Fields[4].Value:=XML.Sheets[1].cells[index,5].Text;
  Table1.Post;
end;
 XML.Application.Quit;
 end;

Библиотека ComObj подключена


Результат - сообщение: "table1: Cannot perform this operation on a closed dataset".
Как я понимаю, невозможно выполнить на закрытом датасет.
Подскажите пожалуйста, как обойти ошибку?


M@g   (2010-09-01 15:40:00) [21]


> Надо открыть, чтобы он не был закрытым.

Это понятно, но дело в том, что я ничего в свойствах не указал (имя и тип).


Anatoly Podgoretsky   (2010-09-01 15:37:00) [22]

> M@g  (01.09.2010 15:19:00)  [0]

Надо открыть, чтобы он не был закрытым.


И. Павел   (2010-09-01 15:37:00) [23]

Сперва прочитайте что-нибудь по TTable ну и по базам данных вообще. И все станет ясно. А в двух словах все не объяснить.

TTable не содержит данных. Данные хранятся в базе. Тоесть без нее не обойтись (можно использовать всякие "MemTable", но это сложнее и нужно только в особых случаях).


M@g   (2010-09-01 15:37:00) [24]

Спасибо за статью, я с этим уже разобрался. Хотелось бы совета как исправить ошибку. А что касается SQL-то он мне очень нравится!


M@g   (2010-09-01 15:34:00) [25]

Сам по себе, кажется. Я ничего не указывал, просто кинул на форму и все. хотя возможно и ошибаюсь. нужно было создать пустую БД Paradox с кол-вом полей, что и в файле. Я ошибаюсь? Прошу дать совет


И. Павел   (2010-09-01 15:33:00) [26]

Вот неплохая статья про TTable и работу с ним:
http://www.helloworld.ru/texts/comp/lang/delphi/delphi1/les35.htm

PS: а лучше сразу использовать SQL: так проще и удобнее.


И. Павел   (2010-09-01 15:28:00) [27]

Table1 к чему-то подключен, или сам по себе? :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо