Форум: "Базы";
Текущий архив: 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.092 c