Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций_2 семестр.doc
Скачиваний:
0
Добавлен:
27.12.2019
Размер:
1.4 Mб
Скачать

Работа с листами рабочей книги

Лист, ячейки которого непосредственно хранят информацию, является принадлежностью книги. В рабочей книги может быть больше одного листа.

Как получить доступ к списку листов или к любому листу рабочей книги? Ответ: с помощью коллекции Sheets. Как и любая коллекция, она содержит свойство Count:integer (количество элементов коллекции) и набор объектов Item(i:integer) — собственно листы, где i — индекс выбранного листа (от 1 до Count). Некоторые методы коллекции Sheets: Select — выделение всех листов рабочей книги, Сору — копирование всех листов в новую рабочую книгу, PrintPreview — предварительный просмотр печати, Printout — вывод на печать, Add — добавление нового листа в рабочую книгу.

Рассмотрим метод Add подробнее. Его можно использовать как без аргументов, так и с аргументами, определяющими место, куда будут добавлены листы (лист), их количество и тип. Если использовать метод Add так, как показано в следующем примере, то будет добавлен лист перед листом Sheet.

procedure TOKBottomDlg3.ButtonlClick(Sender: TObject);

begin

Sheets.Add(Before:=Sheet);

end;

Добавив листы или просто открыв или создав рабочую книгу, мы можем получить список листов и доступ к любому листу рабочей книги. Для этого используем уже известные свойства коллекции Sheets.

После загрузки списка листов мы можем получить доступ к любому листу для работы с ним. Для начала попробуем изменить непосредственно свойства самого листа, например его имя. Имя листа представляет собой строку и содержится в свойстве Name объекта Sheet. Доступ к листу рабочей книги получим, например, с помощью следующей процедуры.

var Sheet:variant;

procedure TOKBottomDlg3.ListBoxlClick(Sender: TObject);

begin

Sheet :=Sheets . item[List.Boxl. Itemlndex+l] ;

end;

Для того чтобы переименовать выбранный рабочий лист, запишем в свойство Name новое значение имени листа, например:

Sheet.Name: =Новый лист;

Мы можем скопировать лист и его содержание с помощью метода Сору объекта Sheet. Этот метод позволяет копировать лист и вставлять копию или до или после оригинала — это зависит от значения аргумента метода Сору. Вот пример использования этого метода в процедурах, разработанных в среде Delphi.

Sheet.Copy(before:=Sheet);

Sheet.Copy(after:=Sheet);

После работы с книгой может понадобиться удалить некоторые листы. Для этого предназначен метод Delete объекта Sheet.

E.DisplayAlerts:=False; Sheet.Delete; E.DisplayAlerts:=True;

Для доступа к ячейкам можно использовать два разных объекта — объект типа Range, который ассоциируется с областью ячеек, или непосредственно объект Cell (ячейка листа рабочей книги). Если первый объект удобен для работы с целыми областями ячеек, то второй больше подходит для работы с отдельно взятой ячейкой. Эти объекты принадлежат объекту "лист" и требуют задания координат ячейки или области ячеек при обращении к ним. Например, для задания объекта, ассоциированного с областью ячеек A1:D5, используем следующий оператор:

MyRange:=Sheet.Range[Al:D5];

где Sheet — ссылка на лист рабочей книги. После удачного выполнения данного оператора переменная MyRange:variant содержит ссылку на объект, ассоциированный с выбранной областью ячеек. Другой вариант данного оператора:

MyRange:= Е.Sheets.Item(1).Range('Al:D5');

Здесь мы получаем ссылку на область ячеек первого листа рабочей книги.

Обеспечить доступ к отдельной ячейке можно с помощью как объекта Range, так и объекта Cell. Использование последнего в операторе получения доступа к ячейке может выглядеть так:

MyCell:=Sheet.Cells[1,1];

При выполнении данного оператора переменная MyCell будет хранить ссылку на ячейку А1.

Итак, мы получили доступ к ячейкам. Попробуем записать в них информацию из приложения на Delphi.

procedure T0KBottomDlg4.ButtonlClick(Sender: TObject);

var a : integer;

begin

randomize;

for a:=l to 100 do Sheet.Cells(a,1):=random(10000);

end;

В данном примере переменная Sheet содержит ссылку на лист рабочей книги (эта переменная была инициализирована ранее). Полный исходный текст приложения находится на сопроводительном диске книги.

Если для записи в ячейки мы присваивали объекту Cells(row, column) значение, то для чтения данных используем оператор, в котором строковой переменной присваивается значение объекта Cells(row, column). Но ячейки могут иметь разные типы. Например, они могут содержать как целые значения, так и формулы. Для чтения или записи значений используются, например, свойства Value и Text ячейки, для записи формулы — свойство Formula. Переменная, которую отображает ячейка, хранится в свойствах Text и Value объекта Range (Cells), поэтому для того чтобы ее получить, достаточно прочитать значение одного из этих свойств. Если тип данных (формат) значения ячейки неизвестен, используем свойство Text, чтобы получить его в виде строки. Когда тип данных известен, можно попытаться использовать свойство Value. Допустим, нам неизвестен тип данных ячейки. Используем следующую процедуру, которая позволяет прочитать ее значение.

value1.Text:=Range.Text;

Формат ячейки определяется свойством NumberFormat объекта Range. Это свойство имеет строковый тип, а форматы данных представляют собой определенным образом заданные символьные константы. Используя свойство NumberFormat, можно изменить формат любой ячейки или области, а также прочитать значение формата с целью его анализа для внесения изменений.

Определим формат ячейки, которая содержит дату. Для этого воспользуемся представленной ниже процедурой, записанной для приложения Delphi

Range:=forml.E.ActiveSheet.Range[addres.Text];

NumberFormat.Text:=Range.NumberFormat;

От методов, позволяющих изменять значение ячеек листа рабочей книги Excel, переходим к изучению других свойств и методов основного объекта приложения Excel — ячейки. Начнем с простого — с определения и изменения размеров самой ячейки, связанных с размерами строк и столбцов. Мы определились, что ячейка всегда определяется объектами Range или Cells. Используя свойства ColumnWidth и RowHeight этих объектов, мы имеем возможность изменить ширину и высоту ячейки. Очевидно, что эти изменения повлекут изменения ширины столбца и высоты строки. В качестве примера использования этих свойств рассмотрим процедуры, позволяющие определить и изменить размеры заданной ячейки.

Range.ColumnWidth:=StrToFloat(ColumnWidth.Text);

Важным свойством текста в Excel является шрифт отображаемых значений ячеек и текста других объектов. Для ячеек шрифт является одним из свойств объекта Range, при этом в одной ячейке не может быть, например, два фрагмента текста с разным шрифтом. Шрифт определяется свойством Font ячейки или области ячеек.

Свойство

Тип

Значение

Name

String

Имя

Background

Integer

Стиль прорисовки фона (используется только для диаграмм)

FontStyle

String

Строковое описание стиля

Bold

Boolean

Полужирный

Italic

Integer

Курсив

Size

Boolean

Размер шрифта

Strikethrough

Boolean

Зачеркнутый

Superscript

Boolean

Верхний индекс

Subscript

Boolean

Нижний индекс

OutlineFont

Boolean

Не используется