gifts2017

Простая выгрузка в Excel

Опубликовал Андрей Зайцев (zaic) в раздел Программирование - Практика программирования

Простой способ получить отчет, форму списка справочника или табличную часть документа в Excel одной кнопкой.


Навеяло http://infostart.ru/public/57697/ и http://infostart.ru/public/57876/ и прочим. На больших таблицах не проверял, информации много, например, здесь: http://www.infostart.ru/public/14186/

Очередные клиенты хотели отчет сразу в Excel. Другим надо было выбрать контрагентов по условию в виде  файла для микрософт-офиса. Кто чего еще хотел подобное, уж и не помню. Некоторые пользовались меню Файл->СохранитьКак, но не знали как.  Вот еще вариант решения.

На форме помещаю флажок "ВыгрузитьВExcel". В конце процедуры Печать() надо вставить проверку, куда выводим. Примерно такой кусок кода должен быть после обычного заполнения таблицы вместо Таб.Показать():

Таб.Опции(,,3);

Таб.ПараметрыСтраницы(2,,,,,,,,,1); //печатаем горизонтально

Таб.ТолькоПросмотр(1);

Если ВыгрузитьВExcel = 1 тогда

ПолноеИмяФайла = КаталогИБ() + "СводныйОтчет.xls";

Если ФС.СуществуетФайл(ПолноеИмяФайла) = 1 Тогда

ФС.УдалитьФайл(ПолноеИмяФайла);

КонецЕсли;

Таб.Записать(ПолноеИмяФайла, "XLS");

Excel = СоздатьОбъект("Excel.Application");

Excel.WorkBooks.Open(ПолноеИмяФайла);

Excel.Visible = 0;

Excel.Columns.AutoFit();

Range = Excel.Range(Excel.Cells(1, 1), Excel.Cells(1, 6));

Range.Select();

Range.AutoFilter();

Excel.Visible = 1; //для экпериментаторов можно по другому:

//ЗапуститьПриложение(ПолноеИмяФайла);

Иначе

Таб.Показать("СводныйОтчет","");

КонецЕсли;

КонецПроцедуры //Печать()

Буду рад, если кому пригодится.

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Андрей Зайцев (zaic) 30.09.09 17:20
Может наконец узнаю, как выделить цветом кусок программы. Нигде по сайту не нашел.
3. Андрей Зайцев (zaic) 30.09.09 18:10
(2) Спасибо. Там для 8-ки.
Я думал, можно проше. Как 6-я кнопка над полем ввода сообщения 
. Работает ли она? Счас проверим.
4. Сергей Ожерельев (Поручик) 30.09.09 18:18
(3) блин, внимательно почитай, там есть для семёрки.
5. Андрей Зайцев (zaic) 01.10.09 10:56
(4) Спасибо, получилось. Всегда приятно что-то новое узнать.

Использовал парсер от Душелова. Кстати, у него на скриншоте опять тема excel: http://infostart.ru/projects/2419/
Нравятся мне его изделия, как всегда простые и функциональные.
6. Сергей Ожерельев (Поручик) 01.10.09 11:07
Если такая выгрузка нужна для документа, то не обязательно курочить конфу, добавляя код. Всё хорошо разруливается внешними формами.
7. MIK В (mikukrnet) 07.10.09 13:21
(0) Пойдет, только темпы надо сохранять в каталоге юзера )
8. MIK В (mikukrnet) 07.10.09 13:23
+ для того чтоб сохранялось быстро, в начале кода всавляем такие строчки

Область=Таб.Область(1,1,Таб.ВысотаТаблицы(),Таб.ШиринаТаблицы());
Область.ВысотаСтроки(12);
9. Михаил (ms33) 13.10.09 14:55
10. White (White__) 13.05.10 18:02
11. Павел Казанцев (powar) 10.09.10 11:58
Отлично! Особенно пригодилась строка
Таб.Записать(ПолноеИмяФайла, "XLS");
;)
13. Andrey (bestship) 30.12.15 19:27