Шаг 201.
Автоматизация Microsoft Excel. Печать.
Задание номера первой страницы

    На этом шаге мы рассмотрим задание номера первой страницы.

    Номер первой страницы печати определяется свойством FirstPageNumber объекта PageSetup. Если оно имеет значение xlAutomatic (-4105), то номер первой страницы определяется "по умолчанию". Чтобы задать конкретный номер первой страницы, нужно в свойство FirstPageNumber записать его значение. Следующая процедура позволяет задать номер первой страницы в приложениях Delphi.

procedure TForm1.Button9Click(Sender: TObject);
//Задание номера первой страницы
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  if CheckBox1.Checked then
     ST.PageSetup.FirstPageNumber:=-4105//xlAutomatic
  else
     ST.PageSetup.FirstPageNumber:=StrToInt(Edit14.Text);
end;

    Результат ее выполнения можно увидеть на рисунке 1. Так как в процессе предварительного посмотра начальный номер страницы увидеть нельзя, мы поступили следующим образом:

    Приведем полный текст приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, Spin, ExtDlgs, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    ComboBox1: TComboBox;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label2: TLabel;
    ListBox1: TListBox;
    Button5: TButton;
    TabSheet2: TTabSheet;
    Label3: TLabel;
    Edit1: TEdit;
    Button6: TButton;
    TabSheet3: TTabSheet;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    TabSheet4: TTabSheet;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Button7: TButton;
    Button8: TButton;
    TabSheet5: TTabSheet;
    RadioGroup1: TRadioGroup;
    Label18: TLabel;
    ComboBox2: TComboBox;
    TabSheet6: TTabSheet;
    CheckBox1: TCheckBox;
    Label19: TLabel;
    Edit14: TEdit;
    Button9: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button9Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  ST:variant;

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Excel и отображение окна
begin
  E:=CreateOleObject('Excel.Application');
  E.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание рабочей книги
begin
  E.WorkBooks.Add;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Открытие рабочей книги
begin
 if OpenDialog1.Execute then
    E.WorkBooks.Open(OpenDialog1.FileName);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Переключение вида документа
begin
  case ComboBox1.ItemIndex of
   0:E.ActiveWindow.View:=1; //xlNormalView;
   1:E.ActiveWindow.View:=2; //xlPageBreakPreview;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Добавление разрывов страницы
var
   i:integer;
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
//Добавление разрывов страницы
  ST.VPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]);
  ST.HPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]);
  ListBox1.Items.Clear;
  ListBox1.Items.Add('Горизонтальные разрывы');
  for i:=1  to ST.HPageBreaks.Count do
    ListBox1.Items.Add(IntToStr(i));
  ListBox1.Items.Add('Вертикальные разрывы');
  for i:=1  to ST.VPageBreaks.Count do
    ListBox1.Items.Add(IntToStr(i));
  ListBox1.ItemIndex:=0;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перенос линий разрывов страниц
begin
  ST.HPageBreaks.Item[1].Location:=ST.Range['A5:A5'];
  ST.VPageBreaks.Item[1].Location:=ST.Range['C4:C4'];
end;

procedure TForm1.Button6Click(Sender: TObject);
//Переопределение области печати
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Переопределение области печати
  ST.PageSetup.PrintArea:=Edit1.Text;
end;

procedure TForm1.Edit2Change(Sender: TObject);
//Задание размеров левого поля
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Задание размеров левого поля
  ST.PageSetup.LeftMargin:=StrToInt(Edit2.Text);
end;

procedure TForm1.Edit3Change(Sender: TObject);
//Задание размеров правого поля
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Задание размеров правого поля
  ST.PageSetup.RightMargin:=StrToInt(Edit3.Text);
end;

procedure TForm1.Edit4Change(Sender: TObject);
//Задание размеров верхнего поля
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Задание размеров верхнего поля
  ST.PageSetup.TopMargin:=StrToInt(Edit4.Text);
end;

procedure TForm1.Edit5Change(Sender: TObject);
//Задание размеров нижнего поля
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Задание размеров нижнего поля
  ST.PageSetup.BottomMargin:=StrToInt(Edit5.Text);
end;

procedure TForm1.Edit6Change(Sender: TObject);
//Задание размеров поля верхнего колонтитула
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Задание размеров поля верхнего колонтитула
  ST.PageSetup.HeaderMargin:=StrToInt(Edit6.Text);
end;

procedure TForm1.Edit7Change(Sender: TObject);
//Задание размеров поля нижнего колонтитула
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Задание размеров поля нижнего колонтитула
  ST.PageSetup.FooterMargin:=StrToInt(Edit7.Text);
end;

procedure TForm1.Button7Click(Sender: TObject);
//Установить колонтитулы
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Установить колонтитулы
  ST.PageSetup.CenterHeader:=Edit8.Text;
  ST.PageSetup.RightHeader:=Edit9.Text;
  ST.PageSetup.LeftHeader:=Edit10.Text;
  ST.PageSetup.CenterFooter:=Edit11.Text;
  ST.PageSetup.RightFooter:=Edit12.Text;
  ST.PageSetup.LeftFooter:=Edit13.Text;
end;

procedure TForm1.Button8Click(Sender: TObject);
//Изменение шрифта верхнего центрального колонтитула
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Изменение шрифта верхнего центрального колонтитула
  ST.PageSetup.CenterHeader:='&28'+Edit8.Text;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
//Ориентация
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  case RadioGroup1.ItemIndex of
    0: ST.PageSetup.Orientation:=1; //xlPortrait
    1: ST.PageSetup.Orientation:=2; //xlLandscape
  end;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
//Размер бумаги
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  ST.PageSetup.PaperSize:=ComboBox2.ItemIndex+1;
end;

procedure TForm1.Button9Click(Sender: TObject);
//Задание номера первой страницы
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  if CheckBox1.Checked then
     ST.PageSetup.FirstPageNumber:=-4105//xlAutomatic
  else
     ST.PageSetup.FirstPageNumber:=StrToInt(Edit14.Text);
end;

end.
Текст этого приложения можно взять здесь (12,3 Кб).

    На следующем шаге мы рассмотрим способы выбора масштаба документа.




Предыдущий шаг Содержание Следующий шаг