Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Импорт из данных Excel в таблицу DBGrid   Найти похожие ветки 

 
Zidane5 ©   (2006-01-31 14:54) [0]

Привет всем!!! Мне нужно твоя помощь. Мне нужно как импортировать данные из Excel в DBGrid.


 
Shirson ©   (2006-02-01 07:20) [1]

На плакат времён WWII похоже. И на орешник - тоже.

В ODBC настрой доступ к Excel файлу, и через ADO или BDE вытаскивай к себе в программу.
(Правда, судя по твоему посту, я мало чем помог...)


 
КиТаЯц ©   (2006-02-01 08:43) [2]


> Shirson ©   (01.02.06 07:20) [1]

:)
Жестоко...

> Zidane5 ©   (31.01.06 14:54)
> данные из Excel в DBGrid.

В tDataSet данные импортировать надо. Отсюда и задумывайся.


 
msguns ©   (2006-02-01 10:36) [3]

Грубияны..
А между тем, это был младший братишка Зинеддина Зидана ;)


 
Bratskiy ©   (2006-02-01 11:42) [4]

Я тоже когда-то пытался сделать такой экспорт. Но что-то затея моя пока так затеей и остаётся. Пробовал:
a) через ODBC.
Там какой-то пароль надо а где его взять, не соображу.
б) Создать DataSet run-time, то есть как-то так:

 DS:=TDataSet.Create(self);

Далее цикл по переменным

Rows := ExcelApp.ActiveSheet.UsedRange.Rows.Count;
Columns := ExcelApp.ActiveSheet.UsedRange.Columns.Count;

В цикле создаются поля

 DS.FieldDefs.Add(st,ftString,0,false);
 DS.FieldDefs[0].CreateField(Ds);

Ещё у меня в цикле значения из Excel к поля (то есть к ячейкам) DataSet"а присваивались

Короче как-то так хотел сделать, но неполучилось. Когда связывал DataSet c DBGrid ошибка выскакивала: "Abstract и что там дальше". Где-то в Internete прочитал что можно вместо DataSet можно аналогично создать TTable, и вроде так должно заработать. Но чтобы создать TTable, надо чтобы была база данных. А зачем мне база, если я просто хочу открыть Excel"евский файл через DBGrid.  

Вобщем всё это дело я забросил.

А сейчас что-то опять заинтересовался. Неужели нельзя никак открыть без всякой базы?


 
msguns ©   (2006-02-01 12:18) [5]

Можно. НО !
1) В Region не должны входить объединенные ячейки
2) Заставить Эксель интерпретировать ячейки как текстовые
3) и еще кое-что ;)


 
Shirson ©   (2006-02-01 12:22) [6]

Excel может выступать как "база данных". И прекрасно всё импортится.
Только вот TTable это зло.


 
Bratskiy ©   (2006-02-01 12:35) [7]


> msguns ©   (01.02.06 12:18) [5]

Если можно, то как я понял через
DS:=TDataSet.Create(self);
и. т. д
Но как тогда правильно DataSet к DBGrid прикрутить, чтобы эти абстрактные ошибки не выскакивали.


> Shirson ©   (01.02.06 12:22) [6]

Что в нём злого? И чем добрым лучше пользоваться?


 
Bratskiy ©   (2006-02-01 12:36) [8]


> msguns ©   (01.02.06 12:18) [5]

Если можно, то как я понял через
DS:=TDataSet.Create(self);
и. т. д
Но как тогда правильно DataSet к DBGrid прикрутить, чтобы эти абстрактные ошибки не выскакивали.


> Shirson ©   (01.02.06 12:22) [6]

Что в нём злого? И чем добрым лучше пользоваться?


 
Shirson ©   (2006-02-01 13:02) [9]

>Bratskiy
То в нём зло, что сия вещь выпадает из логики SQL. Как и компоненты хранимых процедур.
Всё делается через T(Ado)Query.

По поводу забора данных из Excel:
Создаёшь коннекцию ODBC к нужному файлу. (пароль можно игнорировать). И обращаешься к этой коннекции из своей программы (я делал через AdoConnection, но можно и напрямую, из Query).
Далее, запросом из Query выбираешь из "таблицы" нужные строки. Если xls-файл не затачивался специально, то таблицей у него считается Sheet, если правильно помню.
(Еще его можно заточить на выборку по запросам. В Excel выбирается регион и ему присваивается имя. После этого, к этому именованному региону можно обращаться как к таблице.)
Привязываешь через датасорс DBGrid к Query и получаешь желаемое.


 
msguns ©   (2006-02-01 13:43) [10]

Не надо использовать ODBC. OLEDB в руки.


 
Shirson ©   (2006-02-01 15:07) [11]

Разумно. Просто я из XL дёргал через ODBC (давно это было), поэтому написал про вариант, который точно знаю.
Хотя, через OLEDB тоже, вроде работал... непомню :)


 
Bratskiy ©   (2006-02-02 05:47) [12]

Когда делаешь через OLEDB можно наткнутся на две проблемы:

1) Когда собираешь ConnectionString, указываешь поставщика
Microsoft Jet OLE DB 4.0, потом указываешь путь к xls файлу, нажимаешь проверить и получаешь ошибку

Выход:

Вручную дописать в конец ConnectionString такую надпись:
Extended Properties = Excel 8.0

2) Свойство TableName у ADOTable можно заполнить через ObjectInspector,
После этого ставишь свойство Active на true и опять ошибка.

Выход:

Значение свойства TableName надо поместить в [ ]


 
sniknik ©   (2006-02-02 08:54) [13]

http://delphimaster.net/view/3-1138284327/



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

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.057 c
9-1126088442
Signate
2005-09-07 14:20
2006.03.05
Движек


3-1136982771
tytus
2006-01-11 15:32
2006.03.05
ХЕЛППП!!! BDEError Record/Key Deleted


2-1140412806
Rubey
2006-02-20 08:20
2006.03.05
Изменить MessageDlg


2-1139812409
Irinka
2006-02-13 09:33
2006.03.05
Простой FTP - клиент


15-1139557331
Asker
2006-02-10 10:42
2006.03.05
альфа/бетта версии