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