Для того чтобы организовать торговлю в Интернет-магазине компании потребуется наличие всего одного Менеджера, контролирующего процесс автоматической работы магазина как из офиса компании, так и из любого места в Сети.
Каталог прайсов интернет магазинов - разместите свой прайс бесплатно
  Главная  |    О компании  |    Новости  |    Статьи  |    Форум  |    Клиенты  |    Обратная связь  |    Карта сайта
Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Запомнить
Пароль
   
Форум
 Программа iNETsHOP » Работа с программой
        Создание схемы импорта
Создание схемы импорта

05.01.2016 17:32

MaXX


Пользователь iNETsHOP


Количество сообщений   64
Зарегистрирован:   11-11-2008, 04:35:57
Как загрузить прайс из Excel через OLE Automation
Мне, когда нужно вытащить какое-то значение ячейки из экселевского листа, открываю его через OLE Automation и читаю из Cells. Сейчас переделал чтение для такого прайса как в примере. Держите вариант на заметку (если колонок не хватает, добавляйте их так же):

Код

declare
@file_name varchar(255), @IExcel int, @hr int, @IWorkbook int,
@data varchar(255),
@source varchar(255),
@description varchar(255),
@iRow int, @iColumn int, @sCellStr varchar(150);
;

DECLARE
@code varchar(32),
@name varchar(155),
@photo varchar(1024),
@price varchar(16),
@url varchar(1024),
@folder_name varchar(155),
@manuftac varchar(1024),
@attributes varchar(max)
;

set @file_name = :FILENAME;
exec @hr = sp_OACreate 'Excel.Application', @IExcel OUT
exec @hr = sp_OASetProperty @IExcel, 'DisplayAlerts', 0

exec @hr = sp_OAMethod @IExcel, 'Application.workbooks.Open', @IWorkbook OUT , @file_name

SET @iRow = 1;
while 1=1
begin
SET @code = NULL;
SET @name = NULL;
SET @photo = NULL;
SET @price = NULL;
SET @url = NULL;
SET @folder_name = NULL;
SET @manuftac = NULL;
SET @attributes = NULL;
SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',1).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @code OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',3).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @name OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',7).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @photo OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',8).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @price OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',9).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @url OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',11).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @folder_name OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',12).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @manuftac OUT;

SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',13).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @attributes OUT;

IF ISNULL(@name, '') = '' BREAK;

INSERT INTO #TMP_PRICE ([NAME],[BRAND], [SID], [DESC_FULL], [PRICE], [CATEGORY], [URL], [IMAGE_URL])
SELECT @name, @manuftac, @code, @attributes, @price, @folder_name, @photo, @url;
SET @iRow = @iRow + 1;
end;

exec sp_OAMethod @IExcel, 'Quit';

exec @hr = sp_OADestroy @IExcel;


P.S.
Этот код нужно вставить в схему импорта там где SQL-запрос импорта или как-то так называется.

Пользователь оффлайн Распечатать
 

Распечатать  |  Следующая тема  |  Предыдущая тема
Перейти
 

Статистика форума
Тем: 506, Сообщений: 3222, Пользователей: 2255
Приветствуем новичка по имени Gotit
Ближайшие дни рождения
Сегодня именинников нет


iNETsHOP - программа для формирования каталога товаров интернет-магазина и обработки прайсов Copyright 2007-2015 "Программа iNETsHOP - работа с прайс-листами поставщиков для интернет магазинов ®" iNETsHOP - обработка, объединение, анализ прайсов поставщиков и конкурентов