Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];

Вниз

Импорт Excel в Delphi. Не получается   Найти похожие ветки 

 
M@g   (2010-09-01 15:19) [0]

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

Пытаюсь импортировать данные из 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".
Как я понимаю, невозможно выполнить на закрытом датасет.
Подскажите пожалуйста, как обойти ошибку?


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

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


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

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

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


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

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


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

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


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

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

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


 
Anatoly Podgoretsky ©   (2010-09-01 15:37) [6]

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

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


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


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

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


 
sniknik ©   (2010-09-01 15:42) [8]

ADO + Jet + Isam Excel, и ненужно подымать ком сервер екселя, или перекладывать данные в таблицу, страница екселевского файла сама по себе является таблицей, а файл базой (с точки зрения перечисленного в начале).


 
M@g   (2010-09-01 15:47) [9]


> Jet + Isam Excel


а вот с этим к сожалению, не знаком:(

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


 
И. Павел ©   (2010-09-01 15:52) [10]

А еще можно так: в Access импортировать из excel, из Access экспортировать таблицу в парадокс. И никакого программирования.


 
Anatoly Podgoretsky ©   (2010-09-01 15:57) [11]

> И. Павел  (01.09.2010 15:33:02)  [2]

Лучше Экспорт в Дельфи, чем импорт в Экселе. Дельфи хоть про Эксель все
знает, а наоборот нуль.


 
Anatoly Podgoretsky ©   (2010-09-01 15:58) [12]

> M@g  (01.09.2010 15:34:03)  [3]

Не рассматривай Парадокс как файл, это таблицы СУБД


 
Anatoly Podgoretsky ©   (2010-09-01 15:59) [13]

> M@g  (01.09.2010 15:40:07)  [7]

А зря, надо было указать, свойство Active


 
Anatoly Podgoretsky ©   (2010-09-01 16:00) [14]

> И. Павел  (01.09.2010 15:52:10)  [10]

А Акцесс здесь зачем?


 
Anatoly Podgoretsky ©   (2010-09-01 16:03) [15]


> M@g   (01.09.10 15:47) [9]

БДЕ не поддерживает конструкции SELECT FROM INSERT INTO, поэтому таблица должна существовать.


 
И. Павел ©   (2010-09-01 16:12) [16]

> А Акцесс здесь зачем?

У меня в excel в диалоге сохранения нет расширения ".db".


 
Anatoly Podgoretsky ©   (2010-09-01 16:16) [17]

> И. Павел  (01.09.2010 16:12:16)  [16]

А в Акцессе есть?


 
sniknik ©   (2010-09-01 16:17) [18]

> БДЕ не поддерживает конструкции SELECT FROM INSERT INTO, поэтому таблица должна существовать.
а вот Jet поддерживает, и при подключении к excel можно выполнять запросы с использованием других isam-ов. (важно, т.к. например из подключения к исаму "парадокс" другие не используются)


 
И. Павел ©   (2010-09-01 16:19) [19]

> А в Акцессе есть?

В Access я выбираю таблицу и в контекстном меню есть пункт экспорт->файл Paradox (office 2003).


 
Плохиш ©   (2010-09-01 16:20) [20]


> M@g   (01.09.10 15:47) [9]
>
>
> > Jet + Isam Excel
>
>
> а вот с этим к сожалению, не знаком:(
>
> Мастера, я вас прошу дать мне совет.

Советую начать с изучения основ.


 
Anatoly Podgoretsky ©   (2010-09-01 16:24) [21]

> И. Павел  (01.09.2010 16:19:19)  [19]

Акцесс могуч как дуб


 
Anatoly Podgoretsky ©   (2010-09-01 16:25) [22]

Совет(ы) тебе дали и ты понял их :-)


 
Dennis I. Komarov ©   (2010-09-01 16:30) [23]


>  XML:=CreateOLEObject("Excel.Application");

Очучение, что код был тупо с...........скопипастен


 
M@g   (2010-09-01 16:36) [24]


> Очучение, что код был тупо с...........скопипастен
>

да, так и есть. скопировал для изучения и понимания


 
Dennis I. Komarov ©   (2010-09-01 16:39) [25]


> да, так и есть. скопировал для изучения и понимания

Основы Вамс сударь изучать и понимать надо, а не это чудо...


 
Anatoly Podgoretsky ©   (2010-09-01 16:42) [26]

> M@g  (01.09.2010 16:36:24)  [24]

Не знаю как с изучением, но с пониманием плохо.


 
M@g   (2010-09-01 16:50) [27]

все равно постараемся понять и изучить. Не было желания. я бы тут не был



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.004 c
15-1280664123
TComponent
2010-08-01 16:02
2010.11.21
Отправка email c командной строки


15-1282002935
Дмитрий С
2010-08-17 03:55
2010.11.21
Синхронизация доступа к хешу.


15-1281528325
@!!ex
2010-08-11 16:05
2010.11.21
Простая программа для обновления установленного ПО


2-1282947042
Германн
2010-08-28 02:10
2010.11.21
packed records и Records (advanced)


15-1281472194
Юрий
2010-08-11 00:29
2010.11.21
С днем рождения ! 11 августа 2010 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский