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

Вниз

Доступ к xls-файлу через ADO   Найти похожие ветки 

 
Bless ©   (2004-10-06 10:27) [0]

Я сделал так:
результат запроса SELECT * FROM t1 в  Query Analizer сохранил как 1.csv. А затем в Excel-е сохранил как 1.xls.
Возможно прочитать данные из этого файла через ADO?

Я пробовал через Microsoft OLE DB Provider for ODBC.
В качестве базы указал 1.xls. Вроде приконнектилось. Кстати, если xls-файл - это база, то что считается таблицей в этой базе?
А как дальше?


 
Nikolay M. ©   (2004-10-06 10:45) [1]


> считается таблицей в этой базе?

Лист книги Екселя.
А зачем такие извращения?


 
Bless ©   (2004-10-06 10:55) [2]

>Лист книги Екселя.
А как к нему обратиться?  select * from [лист1]. Дык, не пашет. И для ADOTable в свойстве tableName в выпадающем списке ничего нет.

>А зачем такие извращения?

Готовлюсь к ближайшему будущему :)
Из одной программы можно получить некий результат в виде экселевского файла. Эти данные надо занести в нашу MSSQL-базу.
Мне очень не хочется делать это через сервер автоматизации и чтение ячейки за ячейкой. Вот и ищу варианты.


 
Nikolay M. ©   (2004-10-06 11:04) [3]

Рекомендую потрогать Data Transformation Service. Задача сведется к приведению данных из ексельника к данным своей базы.


 
Bless ©   (2004-10-06 11:22) [4]

Nikolay M.[3]>
Попробовал. Получилось. Но желательно, чтобы такая возможность была в программе пользователя. Типа: меню-> импорт->выбрал xls-файл ->ок.


 
Polevi ©   (2004-10-06 11:22) [5]

програмно так

var
 conn,rs:OleVariant;
begin
   conn:=CreateOleObject("ADODB.Connection");
   conn.Open(Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=NO"",[AFileName]));
   rs:=conn.Execute("SELECT * FROM Sheet1");
...

а вообще см [3]


 
Bless ©   (2004-10-06 11:30) [6]

Polevi ©  (06.10.04 11:22) [5]>
>rs:=conn.Execute("SELECT * FROM Sheet1")

Опа. А я и не знал, что так можно. Попробую, спасибо.


 
Polevi ©   (2004-10-06 11:38) [7]

далее советую содержимое рекордсета сохранить в поток в xml виде, и затем этот xml пакет передать хранимой процедуре - далее смотри sp_xml_preparedocument и openxml


 
Nikolay M. ©   (2004-10-06 11:54) [8]


> Попробовал. Получилось. Но желательно, чтобы такая возможность
> была в программе пользователя. Типа: меню-> импорт->выбрал
> xls-файл ->ок.

Имя ексельника задаешь во внешней переменной ДТС-пакета.
http://delphimaster.net/view/3-1096979681/


 
Bless ©   (2004-10-06 12:02) [9]

Polevi [5]>

Выскакивает та же ошибка:
Project Project1.exe raised exception class EOleException with message "Объект "Sheet1" не найден ядром базы данных Microsoft Jet.  Проверьте существование объекта и правильность имени и пути".


 
Bless ©   (2004-10-06 12:15) [10]

Nikolay M. [8]>
Наверное, подойдет, спасибо. Думаю, вопрос снят (проверять сейчас некогда, но скорей всего заработает). Хотя почему не работают другие способы, интересно. Хоть и не актуально.


 
Polevi ©   (2004-10-06 12:15) [11]

>Bless ©   (06.10.04 12:02) [9]
а лист с таким именем есть в книге ?
попробуй в квадратные скобки взять
mdac также рекомендую поставить поновее


 
Nikolay M. ©   (2004-10-06 12:29) [12]


> "Объект "Sheet1" не найден

Может, Лист1?


 
sniknik ©   (2004-10-06 16:53) [13]

> Может, Лист1?
не именно Sheed1. ;о))
только с долларом на конце. (имя проще посмотреть в самом екселе, какое имя листа?)
запрос получится такой
SELECT * FROM [Sheed1$]



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

Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
14-1098273465
Ega23
2004-10-20 15:57
2004.11.07
Приятель только что приятель прислал :о)


14-1097998461
Elpis
2004-10-17 11:34
2004.11.07
Программист - это не тот, кто пишет программы, а тот


8-1091552205
Unn
2004-08-03 20:56
2004.11.07
Дисторшн


9-1089902972
Kobik
2004-07-15 18:49
2004.11.07
Косяки с выводом фона.


3-1097470959
Tomkat
2004-10-11 09:02
2004.11.07
ADS Server





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