Главная страница
    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.031 c
3-1097246118
Step[B.M.]
2004-10-08 18:35
2004.11.07
Как получить выходной параметр процедуры не используя SUSPEND


1-1098430341
seregin2
2004-10-22 11:32
2004.11.07
NetSend


4-1096671072
НовичОк
2004-10-02 02:51
2004.11.07
Заголовки кнопок в другом приложении


4-1096739153
Евгений2
2004-10-02 21:45
2004.11.07
Как определить, что окно что-то выполняет?


1-1098457860
MRAk
2004-10-22 19:11
2004.11.07
Как Добавить картинку в Drawgride в опр ячейку





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