Настройки листа и печать в MS Excel

После окончательного формирования информации на листе рабочей книги необходимо задать настройки листа и переходить к печати. Эта часть будет посвящена функциям настройки общих параметров листа, выбора и настройки принтера, подготовки листа и функциям печати. Excel.Application имеет большие возможности для выбора и настройки принтера и параметров печати. Здесь представлен только минимальный их набор. Если в вашей операционной системе не установлен принтер, то большинство описанных ниже функций завершится ошибкой. Для использования информации в своих приложениях начните изучение статьи с первой части.
== Некоторые общие параметры для листа ==
Фоновый рисунок листа устанавливается процедурой SetBackgroundPicture, коллекции Sheets или объекта ActiveSheet. Если аргумент FileName этой функции равен пустой строке, то это отменяет установленный ранее фоновый рисунок. Реализация этой возможности на Delphi представлена в виде функции SetBackgroundPicture.
function SetBackgroundPicture(ASheet: Variant; AFileName: string): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].SetBackgroundPicture(FileName := AFileName);
 except
 Result := False;
 end;
end;
Сетку активной страницы можно сделать видимой или невидимой, используя свойство DisplayGridlines объекта ActiveWindow. Если перед этим необходимо выбрать определенный лист, то используйте метод Select, например, Sheets("Лист1").Select.
function DisplayGridlines(ADisplay: Boolean): Boolean;
begin
 Result := True;
 try
 E.ActiveWindow.DisplayGridlines := ADisplay;
 except
 Result := False;
 end;
end;
== Выбор и настройка принтера ==
Если принтеры не установлены, то функции выбора и настройки принтера и задания параметров страницы для печати не могут быть выполнены. Выбор принтера можно осуществить разными способами. Один из них - активизация диалогового окна "Выбор принтера". В Visual Basic это осуществляется оператором
Application.Dialogs.Item (xlDialogPrinterSetup).Show
где Dialogs - коллекция диалогов, а xlDialogPrinterSetup - константа, определяющая выбор диалога. В Delphi это можно реализовать в виде функции ShowDialogPrinterSetup, которая возвращает True или False, в зависимости от результата.
function ShowDialogPrinterSetup(): Boolean;
const
 xlDialogPrinterSetup = 9;
begin
 try
 Result := E.Dialogs.Item[xlDialogPrinterSetup].Show;
 except
 Result := False;
 end;
end;
Для того, чтобы выбрать принтер и отправить задание на печать, необходимо вызвать диалог с использованием следующего оператора Application.Dialogs.Item (xlDialogPrint).Show. Константа xlDialogPrint определяет вызов стандартного диалога печати. Функция ShowPrintDialog реализует эти возможности.
function ShowPrintDialog(): Boolean;
begin
 try
 Result := E.Dialogs.Item[xlDialogPrint].Show;
 except
 Result := False;
 end;
end;
Можно расширить возможности этого диалога, предварительно задав некоторые параметры, например, диапазон страниц и количество копий:
result = Application.Dialogs.Item(xlDialogPrint).Show(arg2:=1, arg3:=2, arg4:=3)
В Delphi это выглядит так:
Result := E.Dialogs.Item[xlDialogPrint].Show(arg2 := 1, arg3 := 2, arg4 := 3);
== Вид листа, область и параметры страницы для печати ==
Вид рабочего листа может быть представлен в режиме "Разметка страницы", если установлен и выбран принтер, или в режиме "Обычный". В режиме разметки страницы есть возможность изменять область печати. Вид рабочего листа определяется константой, которая содержится в поле View объекта ActiveWindow. Она может иметь значения xlNormalView=1 или xlPageBreakPreview=2. Функция WindowView для приложений Delphi реализует изменение вида рабочего листа.
function WindowView(AView: Integer): Boolean;
begin
 Result := True;
 try
 E.ActiveWindow.View := AView;
 except
 Result := False;
 end;
end;
Когда принтер выбран, можно приступать к настройке параметров страницы печати, которые зависят от параметров выбранного принтера. Параметры настройки печати листа содержатся в полях объекта PageSetup, который является свойством листа. Поля объекта PageSetup содержат и определяют ориентацию и пропорции для печати страницы, размеры полей, колонтитулы, порядок и диапазон печати, качество печати. Из всего этого набора остановимся на тех, которые используются наиболее часто. Это задание ориентации страницы, размер бумаги и область печати. Ориентация бумаги определяется константой, которая записывается в поле Orientation объекта PageSetup. Она может иметь два значения: xlLandscape - альбомная и xlPortrait - книжная. Функция PageOrientation реализует это в приложениях Delphi.
function PageOrientation(ASheet: Variant; AOrientation: Integer): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].PageSetup.Orientation := AOrientation;
 except
 Result := False;
 end;
end;
Размер бумаги определяется константой, записанной в поле PaperSize, которая может иметь более 40 значений, каждое из которых соответствует различным типовым размерам бумаги (см. приложение www.kornjakov.ru/st2_4.zip). Наиболее часто используются размеры бумаги формата A3 (xlPaperA3=8) и A4 (xlPaperA4=9).
function PagePaperSize(ASheet: Variant; APaperSize: Integer): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].PageSetup.PaperSize := APaperSize;
 except
 Result := False;
 end;
end;
Область границ страницы - прямоугольная область ячеек, которая будет выведена на печать. Для задания области границ необходимо в поле PrintArea объекта PageSetup записать строку, которая определит верхнюю левую, правую нижнюю ячейку области, например: PrintArea = "$A$1:$I$26". Ячейки, которые не входят в эту область, не будут выведены на печать.
function PagePrintArea(ASheet: Variant; APrintArea: string): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].PageSetup.PrintArea := APrintArea;
 except
 Result := False;
 end;
end;
Для того, чтобы линии сетки отображались на печатной форме или были спрятаны, используется свойство PrintGridlines объекта PageSetup.
function PrintGridlines(ASheet: Variant; AGridline: Boolean): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].PageSetup.PrintGridlines := AGridline;
 except
 Result := False;
 end;
end;
Важным свойством объекта PageSetup являются размеры полей слева, справа, сверху и снизу (LeftMargin, RightMargin, TopMargin, BottomMargin). В эти поля записывается количество точек. Если исходные величины полей заданы в дюймах, то преобразование осуществляем, используя функцию Point = Application.InchesToPoints(Inche), где Point - количество точек, Inche - величина в дюймах.
== Просмотр печати ==
Когда документ сформирован и выполнены настройки печати, можно переходить к просмотру информации, выводимой на печать. Для этого используем метод PrintPreview объекта "лист". Для применения его в приложениях Delphi можно воспользоваться следующей функцией PrintPreview, где в качестве аргумента применяется номер или имя страницы.
function PrintPreview(ASheet: Variant): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].PrintPreview;
 except
 Result := False;
 end;
end;
Можно воспользоваться альтернативным способом для просмотра печати. Он заключается в вызове обычного диалога. Используйте для этого Dialogs.Item(xlDialogPrintPreview).Show, где константа xlDialogPrintPreview = 222.
function PrintPreviewEx: Boolean;
const
 xlDialogPrintPreview = 222;
begin
 Result := True;
 try
 E.Dialogs.Item[xlDialogPrintPreview].Show;
 except
 Result := False;
 end;
end;
== Печать ==
После всех настроек и просмотра печати можно переходить непосредственно к печати документа. Для этого будем использовать метод PrintOut объекта "Лист" коллекции Sheets. В функции Print в качестве аргументов передаем номер или имя листа и количество копий для печати.
function Print(ASheet: Variant; ACopies: Integer): Boolean;
begin
 Result := True;
 try
 E.ActiveWorkbook.Sheets.Item[ASheet].PrintOut(Copies := ACopies);
 except
 Result := False;
 end;
end;
Для расширения возможностей печати можем использовать весь набор аргументов метода PrintOut. Например, для задания печати 2-х копий со 2-й по 3-ю страницу используем метод и набор следующих аргументов:
PrintOut(from:=2, To:=3, Copies:=2);
== См. также ==
* Суперфункции MS Word and MS Excel (статья)
* Суперфункции EXCEL.
* Настройки листа и печать в MS Excel
* Диаграммы Excel
* Создание DLL-библиотеки для работы с Word/Excel из приложений на Delphi
* Суперфункции:FAQ
Author: Василий КОРНЯКОВ
Source: http://www.kornjakov.ru
Category:COM
Category:MS Office