Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Получение данных из Excel,

Получение данных из Excel,
Я
   Креатив
 
21.09.16 - 11:27
На сервере у клиента стоит 1с УТ 10.3. Пользователи работают с ней через web application. Есть файл Excel, в котором находится прайс. Какой самый простой способ вытаскивать (выборочно) данные из этого файла? Excel на сервере не установлен.
 
 
   sapphire
 
1 - 21.09.16 - 11:34
(0) На клиенте запихнуть всё в COMSafeArray и его передать на сервер.
   Креатив
 
2 - 21.09.16 - 11:39
(1)А это точно простое решение?
Уточню на всякий случай. База файловая.
   Креатив
 
3 - 21.09.16 - 11:40
(2)+ А сервер терминальный.
   Vanilla26
 
4 - 21.09.16 - 11:42
может ТабличныйДокумент.Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>)
   virtozz
 
5 - 21.09.16 - 11:48
Если нет экселя попробуй через com-объект ADODB.Recordset
   Креатив
 
6 - 21.09.16 - 11:49
(5) А как у этого объекта дела обстоят с поиском?
   DrZombi
 
7 - 21.09.16 - 11:50
(0) Через АДО :)
   Cyberhawk
 
8 - 21.09.16 - 11:50
Если xlsx, то нативно
   virtozz
 
9 - 21.09.16 - 11:54
(6) С помощью запросов типа "SELECT F1 AS Поле1, F2 AS Поле2 FROM [A1:AZ1000] WHERE условие". Все колонки именуются с буквы в F
   Креатив
 
10 - 21.09.16 - 12:03
А где про это АДО лучше почитать? Или рыбу подкиньте.
Задачка совсем простая. Найти строчку с заданным артикулом(первая колонка). Взять из неё цену(третья колонка).
 
 Рекламное место пустует
   Vanilla26
 
11 - 21.09.16 - 12:08
(10) а почему (4) не подходит? платформа не позволяет или это долго?
   Креатив
 
12 - 21.09.16 - 12:11
(21)Всё-таки эксел - это не mxl. Да и память подгружать сильно будет.
   Vanilla26
 
13 - 21.09.16 - 12:14
(12) ну он и ( *.xls и *.xlsx) читает...а про память хз, надо тестить
   DrZombi
 
14 - 21.09.16 - 12:30
(10) http://catalog.mista.ru/public/163640/

Если покопаться, что можно получить список листов :)
http://catalog.mista.ru/public/163724/
   Креатив
 
15 - 21.09.16 - 12:36
(13){Форма.Форма.Форма(5)}: Ошибка при вызове метода контекста (Прочитать)
    Таб.Прочитать("D:\1C\Moscow\прайс.xlsx");
по причине:
Ошибка при выполнении файловой операции 
Платформа 8.2.19.130
   Креатив
 
16 - 21.09.16 - 12:42
(14)Спасибо, почитаю.
   Vanilla26
 
17 - 21.09.16 - 12:56
(15) а ну да.. эт с 8.3 пошло
   упс
 
18 - 21.09.16 - 13:03
недавно столкнулись с проблемой с АДО - один контрагент шлёт файлы .xls, информация из которых должна загружаться в УС. И вот в один прекрасный день, в файлах, которые присылает контрагент, при их загрузке через АДО, в рекордсет не попадала последняя колонка. Если присланный файл открыть экселем или опенофисом и нажать Ctrl-S (ничего не изменяя), файл читается нормально (последняя колонка попадает), если грузить присланный - нет последней колонки, хоть убейся.
Проблема осложнялась тем, что заранее было неизвестно сколько колонок будет в присланном файле.
Как контрагент формирует этот xls файл осталось неизвестным, выкрутились, с помощью вызова openoffice из 1С, пересохранения файла и автоматической повторной загрузкой.
Просто для информации.
   virtozz
 
19 - 21.09.16 - 13:24
(10) У меня так сделано:

//Функция, позволяющая открыть файл Excel через ADO, т.е. обращается к файлу как к БД

Функция ADOПодключение(ИмяФайла, СтрокаВыборки) Экспорт
            
    Файл = Новый Файл(ИмяФайла);
    
    //Проверяем на существование выбранный файл

    Если НЕ Файл.Существует() Тогда
        Предупреждение("Файл не указан или несуществует!");
        Возврат Неопределено;
    КонецЕсли;
    
    //Удаляем лишний символ "\" в имени файла для корректного соединения через ADODB

    Стр_Файл = Файл.ПолноеИмя;
    Стр_Путь = Файл.Путь;
    
    Если Прав(Стр_Путь, 1) = "\" Тогда
        Стр_Путь = Лев(Стр_Путь, СтрДлина(Стр_Путь) - 1);
    КонецЕсли;
    
    //Устанавливаем соединение через ADODB к файлу Excel

    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Стр_Файл + ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1""";
    
    Попытка
        Соединение.Open();
    Исключение
        Сообщить("Невозможно подключиться к Microsoft Excel Driver!
        |Возможно файл [" + Стр_Файл + "] открыт другим пользователем");
        Возврат Неопределено;
    КонецПопытки;

        //Настраиваем свойства настройки

    НаборДанных = Новый COMОбъект("ADODB.RecordSet");    
    НаборДанных.ActiveConnection = Соединение;

    НаборДанных.CursorType = 3;

    НаборДанных.LockType = 3;        
    
    Попытка
        НаборДанных.Open(СтрокаВыборки, Соединение);
        Возврат НаборДанных;
    Исключение
        Сообщить("Не удалось выполнить запрос к файлу Excel
        |" + ОписаниеОшибки(), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецПопытки;
КонецФункции
   Serginio1
 
20 - 21.09.16 - 13:34

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует