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

Вниз

Импорт из данных 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
15-1139506868
Sergey Masloff
2006-02-09 20:41
2006.03.05
умирание dcc32


2-1139950387
Kot_
2006-02-14 23:53
2006.03.05
Составление индекса по символьному и цифровому полю


15-1139579361
MadAngel
2006-02-10 16:49
2006.03.05
Проблема с виндой :(


1-1138887491
Maverick
2006-02-02 16:38
2006.03.05
[Developer Express]как изменить цвет строчки в grid е?


1-1138789069
FreeAdvisor
2006-02-01 13:17
2006.03.05
Заголовок сообщения на языке по умолчанию ОСи





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский