В 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()
При установке авто высоты строки цикл прерывается, если встречается строка с пустым содержимым текста ячейки. Сделано не универсально, поэтому вы можете определить свой алгоритм выхода из цикла.
Надеюсь, кому-нибудь пригодится.
Спасибо! Помогло
Спасибо! Стояла подобная задача. Благородя вам сэкономил массу времени.
Спасибо, то что надо было!!!!
Спасибо, помогли.
Спасибо! То, что нужно!!
Спасибо. Очень помогли!
Спасибо за статью!
Супер!