Каталог решений - Пример сохранения плоской таблицы в файл Excel

Пример сохранения плоской таблицы в файл Excel

Пример сохранения плоской таблицы в файл Excel

В наличии

В обработке приводится пример формирования итогового файла с помощью попарного объединения.

Категория:

Описание

Недавно мне пришлось решать следующую задачу. Выгрузить в плоскую таблицу агрегированные данные по документам реализации за большой период.  От решения в лоб, когда запросом выбирались данные за весь период, я отказался  по причине того, что сохранение полученного  табличного документа в файл в формате Excel могло вызвать большой расход памяти на сервер.  Поэтому исходный период был разбит на более мелкие интервалы, для каждого из которых формировался отдельный файл. Склеивание общего файла выполнялось с помощью рекуррентной функции попарного соединения начальных и промежуточных файлов. Схема, приведенная в заголовке статьи, иллюстрирует данный процесс за исключением того, что стрелки должны быть направлены снизу вверх. Интерес может представлять именно эта функция. На вход функции подается массив, содержащий пути к промежуточным файлам, которые расположены в порядке создания и, как следствие, интервалов. Второй параметр это ссылка на com соединение с Excel.

Функция ОбъединитьФайлыПопарно(вхМассив,Excel)
	
	если вхМассив.ВГраница()=1 тогда
		возврат истина;
	конецесли;
	
	нМакс=(вхМассив.ВГраница()-вхМассив.ВГраница()%2);
	мМассив=новый массив;
	мМассив.Добавить();
	
	инфо=новый СообщениеПользователю;
	
	для н=1 по нМакс цикл
		СоединитьФайлы(вхМассив[н],вхМассив[н+1],Excel);
		УдалитьФайлы(вхМассив[н+1]);
		инфо.Текст="удален файл "+вхМассив[н+1];
		инфо.Сообщить();
		мМассив.Добавить(вхМассив[н]);
		н=н+1;
	конеццикла;	
	
	если нМакс<вхМассив.ВГраница() тогда
	  СоединитьФайлы(вхМассив[нМакс-1],вхМассив[нМакс+1],Excel);
	  УдалитьФайлы(вхМассив[нМакс+1]);
	  инфо.Текст="удален файл "+вхМассив[нМакс+1];
	  инфо.Сообщить();
    конецесли;
  
    ОбъединитьФайлыПопарно(мМассив,Excel);

КонецФункции

Приложенная обработка не привязана к какой-либо конфигурации. Симулируется генерация данных на каждый день указанного интервала, при этом в итоговой таблице строки, в которых в колонке Номер стоит простое число, выделяются цветом. Имя итогового файла InfoStart.xls  зашито в коде. Все промежуточные файлы создаются во временном каталоге на сервере с последующим удалением. Информация об удаленных файлах выводится в окно сообщений. Вид итоговой таблицы приведен ниже. После завершения процедуры формирования общего файла программа пытается открыть его с помощью команды НачатьЗапускПриложения. 

Тестирование обработки выполнялось на платформе 1С:Предприятие 8.3 (8.3.14.1976) и 1С:Предприятие 8.3 (8.3.18.1616). Для  работы в клиент-серверном варианте на сервере должен быть установлен Excel. 

 

Вид итогового файла

 

Форма обработки содержит два поля — Каталог и Период. Формирование итогового файла выполняется по команде Сохранить.  Так как эмулируется вывод данных за каждый день, то указывать большой интервал нецелесообразно.

 

Форма обработки

has been added to your cart:
Оформление заказа