gifts2017

Установка параметров страницы Excel

Опубликовал Григорий Бельцев (gregb) в раздел Обмен - Загрузка и выгрузка в Excel

Процедура для установки параметров страницы и высоты строк табличных документов, сохраненных в формате Excel.

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

Представленная процедура предназначена для решения этой проблемы. Конечно не обошлось без старого доброго ОЛЕ.

Процедура УстановитьПараметрыПечатиExcel(ИмяФайла, Ориентация, ПолеСлева = 10, ПолеСправа = 10, ПолеСверху = 10, ПолеСнизу = 10, АвтоВысотаСтрок = Ложь) Экспорт

    Попытка
       
Excel = Новый COMОбъект("Excel.Application");
       
Excel.Visible = True;
       
Workbook = Excel.Workbooks.Open(ИмяФайла);
       
Лист = Workbook.Sheets(1);
       
Лист.PageSetup.Zoom = False;
       
Лист.PageSetup.FitToPagesWide = 1; // По ширине листа
       
Лист.PageSetup.FitToPagesTall = False;
        Если
Ориентация = ОриентацияСтраницы.Ландшафт Тогда
           
Лист.PageSetup.Orientation = 2; // xlLandscape
       
Иначе
           
Лист.PageSetup.Orientation = 1; // xlPortrait
       
КонецЕсли;
       
Лист.PageSetup.LeftMargin = Excel.Application.InchesToPoints(ПолеСлева / 25.4); // Поле слева
       
Лист.PageSetup.RightMargin = Excel.Application.InchesToPoints(ПолеСправа / 25.4); // Поле справа
       
Лист.PageSetup.TopMargin = Excel.Application.InchesToPoints(ПолеСверху / 25.4); // Поле сверху
       
Лист.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу / 25.4); // Поле снизу

       
Если АвтоВысотаСтрок Тогда
           
// Устанавливаем высоту строк
           
НомерСтроки = 1;
            Пока
НомерСтроки < 100000 Цикл

               
Ячейка = Лист.Cells(НомерСтроки, 1);
               
Строка = Ячейка.EntireRow();
               
Строка.AutoFit();
                Если
ПустаяСтрока(Ячейка.Value) Тогда
                    Прервать;
                КонецЕсли;
               
НомерСтроки = НомерСтроки + 1;

            КонецЦикла;
        КонецЕсли;

       
Excel.DisplayAlerts = False;
       
Workbook.Save();
       
Workbook.Close();
       
Workbook = Неопределено;
       
Excel.Quit();
       
Excel = Неопределено;

    Исключение

    КонецПопытки;

КонецПроцедуры
// УстановитьПараметрыПечатиExcel()

При установке авто высоты строки цикл прерывается, если встречается строка с пустым содержимым текста ячейки. Сделано не универсально, поэтому вы можете определить свой алгоритм выхода из цикла.

Надеюсь, кому-нибудь пригодится.

См. также

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

Комментарии

1. Павел Александрович (oslokot) 04.02.14 13:43
2. Виталий Онянов (Tavalik) 14.03.14 11:39
Спасибо! Стояла подобная задача. Благородя вам сэкономил массу времени.
3. Надежда Гайнанова (nadja_gw) 04.04.14 08:25
Спасибо, то что надо было!!!!
4. Макс Савостин (mc1c80) 18.12.14 09:02
5. Ivan (-ioan-) 02.02.15 14:30
6. Макс Чакрыгин (tw1ster_ok) 12.02.15 17:36
7. v i (vis_tmp) 04.09.16 12:52
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа