Настройки листа и печать в 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);
См. также[править | править код]
- Суперфункции MS Word and MS Excel (статья)
- Суперфункции EXCEL.
- Настройки листа и печать в MS Excel
- Диаграммы Excel
- Создание DLL-библиотеки для работы с Word/Excel из приложений на Delphi
- Суперфункции:FAQ
Author: Василий КОРНЯКОВ
Source: http://www.kornjakov.ru