Имя: Пароль:
1C
 
Внешние источники данных и Excel 2010
0 termos
 
08.12.14
14:04
Добрый день!

Столкнулся с вопросом - как правильно считывать файл Excel (2010 - расширение xlsx) через внешние источники данных.
Создавая внешний источник данных и в последствии таблицу - указываю в конструкторе (пункт - Выбрать из списка таблиц источника данных) следующую строку подключения:

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\моиданные.xlsx;

В результате драйвер не получает ни одного поля из файла. Если использовать другой драйвер, то выходит ошибка сообщающая о невозможности получить параметры строки получения у драйвера.

Подскажите, пожалуйста, кто сталкивался с подключением файлов Excel 2010 через внешние источники данных - каким образом реализовать подключение, чтобы 1С автоматически подхватила поля из файла.
1 termos
 
08.12.14
14:16
(0) Да, уточню на всякий случай - у меня Windows 8.1 64 бит
2 termos
 
08.12.14
14:26
Если делать вручную и прописывать вручную поля (имена заголовков полей) в таблице, то всё работает.

И выполняя такой код - всё получает без проблем из файла:

&НаСервере
Процедура ЗагрузитьНаСервере()
Если ВнешниеИсточникиДанных.Excel.ПолучитьСостояние() = СостояниеВнешнегоИсточникаДанных.Отключен Тогда
    ПараметрыСоединения = ВнешниеИсточникиДанных.Excel.ПолучитьОбщиеПараметрыСоединения();
    ПараметрыСоединения.СтрокаСоединения=
    "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\моиданные.xlsx;";
    ВнешниеИсточникиДанных.Excel.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
    ВнешниеИсточникиДанных.Excel.УстановитьСоединение();
        
    Запрос = Новый Запрос();
    
    Запрос.Текст = "ВЫБРАТЬ
                   |    Данные.Фамилия,
                   |    Данные.Имя,
                   |    Данные.Отчество,
                   |    Данные.Количество
                   |ИЗ
                   |    ВнешнийИсточникДанных.Excel.Таблица.Данные КАК Данные";
    
    ТЗ = Запрос.Выполнить().Выгрузить();
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Загрузить(Команда)
    ЗагрузитьНаСервере();
КонецПроцедуры
3 termos
 
08.12.14
14:27
Получается это плохо реализован механизм в платформе?
4 ДенисЧ
 
08.12.14
14:27
(3) 8ка - глючная и сырая
5 spectre1978
 
08.12.14
14:30
(0) Обязательно через ODBC надо? Может, есть смысл использовать более современный механизм ADO, поставив Microsoft Access ACE драйвер?
6 spectre1978
 
08.12.14
14:31
правда, я не пробовал зачитывать таким образом Excel 2010, но 2007 xlsx читался...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший