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

Материал из DRKB


После окончательного формирования информации на листе рабочей книги необходимо задать настройки листа и переходить к печати. Эта часть будет посвящена функциям настройки общих параметров листа, выбора и настройки принтера, подготовки листа и функциям печати. 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);


См. также[править | править код]


Author: Василий КОРНЯКОВ
Source: http://www.kornjakov.ru