Приветствую Вас ГостьПятница, 03.05.2024, 19:40

Каталог статей


Сформировать таблицу или книгу Excel

Самый простой и кросплатформенный способ сформировать файл Excel - это сформировать табличный документ и записать его в формате Excel

    ТД = Новый ТабличныйДокумент();
    ...
    ТД.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLSX)

Если надо сформировать книгу из нескольких страниц, то лучше использовать объект ПакетОтображаемыхДокументов, поместить в него табличные документы и так же записать в формате Excel.

Чтобы добавить табличные документы в ПакетОтображаемыхДокументов их надо поместить во временное хранилище и заполнить состав пакета. 

Элемент пакета состоит из реквизитов: Данные (адрес во временном хранилище) и Наименование (имя страницы в будущем файле).

Общий принцип работы такой:

1. Вызываем из клиента метод для формирования на сервере массива данных для будущей таблицы. 

2. На сервере формируем табличные документы, записываем их во временное хранилище и заполняем массив структур (Имя страницы, АдресВХранилище)

3. На клиенте создаем ПакетОтображаемыхДокументов, заполняем по массиву его состав и записываем файл.

Пример:

&НаКлиенте
Процедура СформироватьТаблицуExcel(Команда)
    
    МассивОписанийФайлов = СформироватьМассивФайлов(); 
    СформироватьИтоговыйФайл(МассивОписанийФайлов);    
    
КонецПроцедуры 

&НаСервере
Функция СформироватьМассивФайлов() 

    Макет = ПолучитьМакет("ИмяМакета");
    МассивФайлов = Новый Массив();               
    ТаблицаОтчета = Новый ТабличныйДокумент();
    ОбластьШапка = Макет.ПолучитьОбласть("шапка");
    ТаблицаОтчета.Вывести(ОбластьШапка);                                                    
    
    Адрес = ПоместитьВоВременноеХранилище(ТаблицаОтчета);
    МассивФайлов.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяСтраницы, Адрес));

     ...
    
    Возврат МассивФайлов; 
    
КонецФункции

&НаКлиенте
Процедура СформироватьИтоговыйФайл(МассивДанных)
    
    ПоказатьОповещениеПользователя("Идет обработка...");
    ИмяФайла = Отчет.Папка + "Итоговая таблица.xlsx";
    
    Пакет = Новый ПакетОтображаемыхДокументов;
      Для Каждого ДанныеЛиста Из МассивДанных Цикл
        АдресВХранилище = ДанныеЛиста["Хранение"];
        ЭлементПакета = Пакет.Состав.Добавить();
        ЭлементПакета.Наименование = ДанныеЛиста["Имя"];
        ЭлементПакета.Данные = АдресВХранилище;
      КонецЦикла;
     Попытка
        Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
        ПоказатьПредупреждение(, "Файл выгружен в " + ИмяФайла);
      Исключение
        ПоказатьПредупреждение(,"Ошибка выгрузки в " + ИмяФайла);
        Сообщить(ОписаниеОшибки());
      КонецПопытки;
    
КонецПроцедуры  

Категория: Взаимодействие с другими базами, приложениями и источниками данных | Добавил: leshic (26.01.2024)
Просмотров: 47 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0