gifts2017

Быстрая выгрузка отчетов в Excel + ярлычки листов

Опубликовал MIK В (mikukrnet) в раздел Программирование - Практика программирования

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

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

// ===============================
Процедура глОткрытьВЭкселе(Таб,ИмяФайла="",НеИзменятьВысотуСтроки=0) Экспорт
    Попытка 
        // запускаем Excel-Server 
        Excel = СоздатьОбъект("Excel.Application");
    Исключение       
        Excel = 0;
        Предупреждение("MS Excel не загружен!");
        Возврат;
    КонецПопытки;   
	
    Если ТипЗначенияСтр(Таб)="Строка" Тогда
        Excel.WorkBooks.Open(Таб);
    Иначе                                                          
        Если НеИзменятьВысотуСтроки=0 Тогда
            ШиринаТаблицы=Таб.ШиринаТаблицы();
            Область=Таб.Область(1,1,Таб.ВысотаТаблицы(),ШиринаТаблицы);
            Область.ВысотаСтроки(12);                 
        КонецЕсли;
		
        Если Найти(ИмяФайла,":")=0 Тогда
            ИмяФайла=КаталогПользователя()+ИмяФайла;
        КонецЕсли;
        Если Найти(Врег(ИмяФайла),"XLS")=0 Тогда
            ИмяФайла=ИмяФайла+".xls";
        КонецЕсли;
		
        Таб.Записать(?(ПустоеЗначение(ИмяФайла)=0,ИмяФайла,КаталогПользователя()+"Таблица.xls"),"XLS");
        Excel.WorkBooks.Open(ИмяФайла);
		
        Excel.Visible = 0;
		
        //добавляем автофильтр и форматирование колонок по ширине
        Excel.Columns.AutoFit();
        Range = Excel.Range(Excel.Cells(1, 1), Excel.Cells(1, ШиринаТаблицы));
        Range.Select();
        Range.AutoFilter();
		
        //показываем вечно прячущиеся ярлычки листов :)		
        Excel.ActiveWindow.DisplayWorkbookTabs = -1;
        Excel.ActiveWindow.TabRatio = 0.25;
    КонецЕсли;
	
    Excel.Visible=1;	  
    Excel=0;
КонецПроцедуры	//глОткрытьВЭкселе

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Епрст (Ёпрст) 16.06.09 12:32
Очередной [:]|||||||||[:]
И не обязательно 12, главное - не АВТО...
begemot; support; +2 Ответить 1
2. Епрст (Ёпрст) 16.06.09 12:33
"И не надо никаких премудрых компонент )"

То же брехня... если нужно сохранить форматирование как есть - то очень даже нужно.
3. dushelov (Душелов) 16.06.09 12:40
(0) >Excel.WorkBooks.Open(ИмяФайла);

Ну а, если в отчете будет 70000 и более строк?
4. Сергей (Che) Коцюра (CheBurator) 16.06.09 13:54
Ну и вообщем-то высота строк в москеле не в пикселях меряется..
???
5. Доржи Цыденов (support) 16.06.09 16:41
Интересное наблюдение.
(1) Ну, не все же такие продвинутые
6. MIK В (mikukrnet) 16.06.09 16:58
Да, 70000 строк не выгрузится. Ну а что ж вы хотите от проги, которой уже 10 лет :))
7. bulpi bulpi (bulpi) 23.06.09 22:48
Не понял ни фига :(. Похоже, в тексте процедуры куска не хватает ?
8. Дмитрий Шерстобитов (DitriX) 26.07.09 22:57
Вот недавно делал отчет - 130к строк и 280 колонок :)
Вообщем сохранить отчет как ХТМЛ и потом копи паст в 2007 :)

Ждем пока 1С 8.1 сможет сохранять напрямую в 2007....
9. Сергей Казаков (Hangmaster) 07.09.11 16:29
С таким скудным описанием так и не понял: что именно передавать в процедуру? Какой аргумент должен быть в "Таб"?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа