Суперфункции

EXCEL. Часть 4

После окончательного формирования информации на листе рабочей книги необходимо задать настройки листа и переходить к печати. Эта часть будет посвящена функциям настройки общих параметров листа, выбора и настройки принтера, подготовки листа и функциям печати. Excel.Application имеет большие возможности для выбора и настройки принтера и параметров печати. Здесь представлен только минимальный их набор. Если в вашей операционной системе не установлен принтер, то большинство описанных ниже функций завершится ошибкой. Для использования информации в своих приложениях начните изучение статьи с первой части.


Некоторые общие параметры для листа

Фоновый рисунок листа устанавливается процедурой SetBackgroundPicture, коллекции Sheets или объекта ActiveSheet. Если аргумент FileName этой функции равен пустой строке, то это отменяет установленный ранее фоновый рисунок. Реализация этой возможности на Delphi представлена в виде функции SetBackgroundPicture.

Function SetBackgroundPicture(sheet:variant;
  file_:string):boolean;
begin
 SetBackgroundPicture:=true;
 try
  E.ActiveWorkbook.Sheets.Item
   [sheet].SetBackgroundPicture(FileName:=file_);
 except
  SetBackgroundPicture:=false;
 end;
End;

Сетку активной страницы можно сделать видимой или невидимой, используя свойство DisplayGridlines объекта ActiveWindow. Если перед этим необходимо выбрать определенный лист, то используйте метод Select, например, Sheets("Лист1").Select.

Function DisplayGridlines(display:boolean):boolean;
begin
 DisplayGridlines:=true;
 try
  E.ActiveWindow.DisplayGridlines:=display;
 except
  DisplayGridlines:=false;
 end;
End;


Выбор и настройка принтера

Если принтеры не установлены, то функции выбора и настройки принтера и задания параметров страницы для печати не могут быть выполнены. Выбор принтера можно осуществить разными способами. Один из них - активизация диалогового окна "Выбор принтера". В Visual Basic это осуществляется оператором Application.Dialogs.Item (xlDialogPrinterSetup).Show, где Dialogs - коллекция диалогов, а xlDialogPrinterSetup - константа, определяющая выбор диалога. В Delphi это можно реализовать в виде функции ShowDialogPrinterSetup, которая возвращает True или False, в зависимости от результата.

Function ShowDialogPrinterSetup:boolean;
 const xlDialogPrinterSetup = 9;
begin
 ShowDialogPrinterSetup:=true;
 try
  ShowDialogPrinterSetup:=E.Dialogs.Item
   [xlDialogPrinterSetup].Show;
 except
  ShowDialogPrinterSetup:=false;
 end;
End;

Для того, чтобы выбрать принтер и отправить задание на печать, необходимо вызвать диалог с использованием следующего оператора Application.Dialogs.Item (xlDialogPrint).Show. Константа xlDialogPrint определяет вызов стандартного диалога печати. Функция ShowPrintDialog реализует эти возможности.

Function ShowPrintDialog:boolean;
begin
 ShowPrintDialog:=true;
 try
  ShowPrintDialog:=E.Dialogs.Item[xlDialogPrint].Show;
 except
  ShowPrintDialog:=false;
 end;
End;

Можно расширить возможности этого диалога, предварительно задав некоторые параметры, например, диапазон страниц и количество копий: result=Application.Dialogs.Item(xlDialogPrint).Show(arg2:=1, arg3:=2, arg4:=3). В Delphi это выглядит так: ShowPrintDialog:=E.Dialogs.Item[xlDialogPrint].Show(arg2:=1, arg3:=2, arg4:=3).


Вид листа, область и параметры страницы для печати

Вид рабочего листа может быть представлен в режиме "Разметка страницы", если установлен и выбран принтер, или в режиме "Обычный". В режиме разметки страницы есть возможность изменять область печати. Вид рабочего листа определяется константой, которая содержится в поле View объекта ActiveWindow. Она может иметь значения xlNormalView=1 или xlPageBreakPreview=2. Функция WindowView для приложений Delphi реализует изменение вида рабочего листа.

Function WindowView (view:integer):boolean;
begin
 WindowView:=true;
 try
  E.ActiveWindow.View:=view;
 except
  WindowView:=false;
 end;
End;

Когда принтер выбран, можно приступать к настройке параметров страницы печати, которые зависят от параметров выбранного принтера. Параметры настройки печати листа содержатся в полях объекта PageSetup, который является свойством листа. Поля объекта PageSetup содержат и определяют ориентацию и пропорции для печати страницы, размеры полей, колонтитулы, порядок и диапазон печати, качество печати. Из всего этого набора остановимся на тех, которые используются наиболее часто. Это задание ориентации страницы, размер бумаги и область печати. Ориентация бумаги определяется константой, которая записывается в поле Orientation объекта PageSetup. Она может иметь два значения: xlLandscape - альбомная и xlPortrait - книжная. Функция PageOrientation реализует это в приложениях Delphi.

Function PageOrientation (sheet:variant;
  orientation:integer):boolean;
begin
 PageOrientation:=true;
 try
  E.ActiveWorkbook.Sheets.Item
   [sheet].PageSetup.Orientation:=orientation;
 except
  PageOrientation:=false;
 end;
End;

Размер бумаги определяется константой, записанной в поле PaperSize, которая может иметь более 40 значений, каждое из которых соответствует различным типовым размерам бумаги (см. приложение www.kornjakov.ru/st2_4.zip). Наиболее часто используются размеры бумаги формата A3 (xlPaperA3=8) и A4 (xlPaperA4=9).

Function PagePaperSize (sheet:variant;
  papersize:integer):boolean;
begin
 PagePaperSize:=true;
 try
  E.ActiveWorkbook.Sheets.Item
   [sheet].PageSetup.PaperSize:=papersize;
 except
  PagePaperSize:=false;
 end;
End;

Область границ страницы - прямоугольная область ячеек, которая будет выведена на печать. Для задания области границ необходимо в поле PrintArea объекта PageSetup записать строку, которая определит верхнюю левую, правую нижнюю ячейку области, например: PrintArea="$A$1:$I$26". Ячейки, которые не входят в эту область, не будут выведены на печать.

Function PagePrintArea (sheet:variant;
  printarea:string):boolean;
begin
 PagePrintArea:=true;
 try
  E.ActiveWorkbook.Sheets.Item
   [sheet].PageSetup.PrintArea:=printarea;
 except
  PagePrintArea:=false;
 end;
End;

Для того, чтобы линии сетки отображались на печатной форме или были спрятаны, используется свойство PrintGridlines объекта PageSetup.

Function PrintGridlines (sheet:variant;
  gridline:boolean):boolean;
begin
 PrintGridlines:=true;
 try
  E.ActiveWorkbook.Sheets.Item
   [sheet].PageSetup.PrintGridlines:=gridline;
 except
  PrintGridlines:=false;
 end;
End;

Важным свойством объекта PageSetup являются размеры полей слева, справа, сверху и снизу (LeftMargin, RightMargin, TopMargin, BottomMargin). В эти поля записывается количество точек. Если исходные величины полей заданы в дюймах, то преобразование осуществляем, используя функцию Point=Application.InchesToPoints(Inche), где Point - количество точек, Inche - величина в дюймах.


Просмотр печати

Когда документ сформирован и выполнены настройки печати, можно переходить к просмотру информации, выводимой на печать. Для этого используем метод PrintPreview объекта "лист". Для применения его в приложениях Delphi можно воспользоваться следующей функцией PrintPreview, где в качестве аргумента применяется номер или имя страницы.

Function PrintPreview (sheet:variant):boolean;
begin
 PrintPreview:=true;
 try
  E.ActiveWorkbook.Sheets.Item[sheet].PrintPreview;
 except
  PrintPreview:=false;
 end;
End;

Можно воспользоваться альтернативным способом для просмотра печати. Он заключается в вызове обычного диалога. Используйте для этого Dialogs.Item(xlDialogPrintPreview).Show, где константа xlDialogPrintPreview=222.

Function PrintPreviewEx:boolean;
begin
 PrintPreviewEx:=true;
 try
  E.Dialogs.Item[xlDialogPrintPreview].Show;
 except
  PrintPreviewEx:=false;
 end;
End;


Печать

После всех настроек и просмотра печати можно переходить непосредственно к печати документа. Для этого будем использовать метод PrintOut объекта "Лист" коллекции Sheets. В функции Print в качестве аргументов передаем номер или имя листа и количество копий для печати.

Function Print (sheet:variant;copies:integer):boolean;
begin
 Print:=true;
 try
  E.ActiveWorkbook.Sheets.Item
   [sheet].PrintOut(Copies:=copies);
 except
  Print:=false;
 end;
End;

Для расширения возможностей печати можем использовать весь набор аргументов метода PrintOut. Например, для задания печати 2-х копий со 2-й по 3-ю страницу используем метод и набор следующих аргументов: PrintOut(from:=2, To:=3, Copies:=2);

Мы рассмотрели все основные вопросы по печати в Excel. Чтобы дополнить описанные функции, используйте свойства объекта PageSetup, которые не рассмотрены в статье, а также другие возможности Excel.Application. В следующей части рассмотрим создание визуальных объектов на листе Excel. Полные исходные тексты с примерами смотрите на www.kornjakov.ru/st2_4.zip. По всем вопросам можете обратиться к автору по адресу _kvn@mail.ru или www.kornjakov.ru.

Василий КОРНЯКОВ

Литература: Н. Елманова, С. Трепалин, А.Тенцер "Delphi 6 и технология COM" "Питер" 2002.

Версия для печатиВерсия для печати

Номер: 

28 за 2003 год

Рубрика: 

Азбука программирования
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!