В платформе 8.3 у табличного документа развили метод Прочитать(), и сейчас можно загружать данные не только из файлов *.mxl, но и *.xls и *.xlsx.
Подробнее в описании.
Шаблон для быстрой загрузки различных файлов Excel.
В новых версиях платформы, у табличного документа можно воспользоваться методом Прочитать(ИмяФайла, СпособЧтенияЗначений) для загрузки данных из файлов *.xls, *.xlsx, причем необязательно указывать формат загружаемого файла (второй необязательный параметр).
СпособЧтенияЗначений — Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
Принцип работы обработки
1) Загрузка данных из файла Excel в новый табличный документ:
//загрузка из Excel в табличный документ
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.Прочитать(ИмяФайлаНаСервере);
2) Загружаем в построитель отчета как источник данных
ВсегоСтрок = ТабДокумент.ВысотаТаблицы;
ВсегоКолонок = ТабДокумент.ШиринаТаблицы;
Если ВсегоСтрок = 0 Тогда
Возврат;
КонецЕсли;
Область = ТабДокумент.Область(1,1,ВсегоСтрок,ВсегоКолонок);
ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
3) Выгружаем результат построителя в ТЗ
ПостроительОтчета.Выполнить();
//в таблице значений - таблица загруженных данных
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
При этом имена колонок формируются по первой строке таблице (заголовки), преобразуя текст в ячейке по правилам именования (пример: "Дата рождения" преобразуется "ДатаРождения".
Важно: метод Прочитать() не работает на клиенте, поэтому при работе на управляемых формах в клиент-серверной базе, необходимо будет передать сам файл с клиента через временное хранилище на сервер.
В дальнейшем можно работать непосредственно с таблицей значений.
В Обработке — пример реализации шаблона, для обычных и управляемых форм (одна обработка с двумя формами), при этом:
1) диалог выбора файла Excel,
2) для управляемых форм — передача через временное хранилище файла с клиента на сервер,
3) автоматическое создание колонок, реквизитов и вывод на форму вновь загруженной таблицы значений.
Тестировалось на платформе 8.3.12.1567, на конфигурациях УТ 10.3 и ЗУП 3.1.
{ВнешняяОбработка.ЗагрузкаИзФайлаExcel.Форма.ФормаОбычная.Форма(41)}: Ошибка при получении значения атрибута контекста (Результат)
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
по причине:
{(1, 1)}: Ожидается выражение «ВЫБРАТЬ»
(1) Прошу прощения, невнимательно прочитал о требованиях к файлу эксель, а именно, чтобы шапка с именами колонок была на первой строке. Всё работает, спасибо.
Хорошая штука, но есть существенный минус — в таблице значений теряется порядок колонок в файле.:(