Форум: "Начинающим";
Текущий архив: 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