Шаблон загрузки из Excel штатными средствами платформы 8.3 (без com, ado, Excel Application) (обычные и управляемые формы)



Шаблон для быстрой загрузки из Excel (форматы *.xls, *.xlsx) средствами платформы 8.3 с помощью табличного документа. Не нужно работать с MSExcel.Application, ADO.
В платформе 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.

3 Comments

  1. jack19

    {ВнешняяОбработка.ЗагрузкаИзФайлаExcel.Форма.ФормаОбычная.Форма(41)}: Ошибка при получении значения атрибута контекста (Результат)

    ТабЗначений = ПостроительОтчета.Результат.Выгрузить();

    по причине:

    {(1, 1)}: Ожидается выражение «ВЫБРАТЬ»

    Reply
  2. jack19

    (1) Прошу прощения, невнимательно прочитал о требованиях к файлу эксель, а именно, чтобы шапка с именами колонок была на первой строке. Всё работает, спасибо.

    Reply
  3. Spacer

    Хорошая штука, но есть существенный минус — в таблице значений теряется порядок колонок в файле.:(

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *