
- •Государственное образовательное учреждение среднего профессионального образования Чайковский техникум промышленных технологий и управления
- •Методические рекомендации по выполнению лабораторной работы Дисциплина «Прикладное программное обеспечение»
- •Учебные
- •Организация взаимодействия с ms Excel
- •Рабочие книги ms Excel
- •Объект Workbook
- •Листы ms Excel
- •Объект Worksheet (ExcelWorksheet)
- •Работа с ячейками
- •Работа с диаграммами ms Excel
- •Упражнение 1. Работа с процессором
- •Упражнение 2. Запись информации
- •Упражнение 3. Выбор шрифта, его цвета и стиля, параметров границы и фона ячеек
- •Упражнение 4. Создание, настройка внешнего вида областей, область построения, заголовка и формирование области данных диаграммы.
- •Варианты задания на оценку «3» Вариант 1
- •Вариант 2
- •Вариант 3
- •Варианты задания на оценку «4» Вариант 4.
- •Вариант 5.
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Варианты задания на оценку «5» Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12
Упражнение 2. Запись информации
Когда мы уже умеем открывать книгу, выбирать рабочий лист и сохранять книгу, то чтобы создать простой документ в Excel, необходимо и достаточно научиться записывать информацию в ячейки таблицы. Шаблоны многих документов уже разработаны и представлены в разнообразных справочных системах, и целесообразно научиться использовать их в своих приложениях.
Лист книги Excel состоит из множества строк и столбцов, пересечения которых представляют собой отдельные ячейки или множество ячеек, если пересекается множество строк и столбцов. Каждая ячейка может содержать информацию в виде данных различного типа или формул. Кроме данных, ячейка имеет другие свойства, которые определяют ее размер, цвет, стиль, формат данных и другие параметры.
Доступ к ячейке или ячейкам в Excel предоставляет объект Range. Этот объект обладает всеми необходимыми свойствами и методами, чтобы писать, читать из ячейки и изменять все ее свойства. Для того, чтобы просто записать информацию в ячейку, необходимо присвоить объекту Range значение, записанное в переменной типа variant. Например: Range['A1']:=123.25; или Range['A1']:='ячейка';. Для записи (чтения) в ячейку из приложений на Delphi разработаем несколько функций. Аргумент (range:string) этих функций может принимать значения, которые соответствуют одной ячейке (например 'A1') или группе ячеек (например 'A1:D5').
Function SetRange (sheet:variant;range:string;
value_:variant):boolean;
begin
SetRange:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range[range]:=value_;
except
SetRange:=false;
end;
End;
Читать информацию одновременно можно только из одной ячейки. Если попытаться читать из группы ячеек, то можно получить ошибку. Поэтому аргумент range:string в функции GetRange принимает только такие значения, как, например 'A1'. В этих функциях чтения и записи, а также и во всех последующих аргумент sheet может принимать как числовые значения (номер листа), так и строковые (имя листа).
Function GetRange (sheet:variant;range:string):variant;
begin
try
GetRange:=E.ActiveWorkbook.Sheets.Item[sheet].Range[range];
except
GetRange:=null;
end;
End;
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, - изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant; column:variant;width:real):boolean;
begin
SetColumnWidth:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Columns[column].ColumnWidth:=width;
except
SetColumnWidth:=false;
end;
End;
Для определения ширины столбца используйте следующий оператор: width:=E.ActiveWorkbook .Sheets.Item[sheet].Columns[column].ColumnWidth;
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant; height:real):boolean;
begin
SetRowHeight:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=E.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Числовой формат ячейки
Данные в ячейках таблицы могут отображаться различным образом (число, дата, время, строка), способ отображения данных называется числовым форматом. Значение числового формата ячейки хранится в свойстве NumberFormat объекта Range, имеет тип строка и может содержать, например, такие значения: 'General', 'hh:mm:ss', '0,000'. Они соответствуют общему формату, формату времени и формату числа с тремя знаками после запятой. Опытным путем можно получить значения всех форматов, для этого в Delphi используем функцию GetFormatRange.
Function GetFormatRange (sheet:variant; range:string):string;
begin
try
GetFormatRange:=E.ActiveWorkbook.Sheets.Item [sheet].Range[range].NumberFormat;
except
GetFormatRange:='';
end;
End;
Для установки числового формата ячейки можем использовать функцию SetFormatRange, которая записывает значение числового формата в свойстве NumberFormat объекта Range.
Function SetFormatRange(sheet:variant;range:string;format:string):boolean;
begin
SetFormatRange:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range [range].NumberFormat:=format;
except
SetFormatRange:=false;
end;
End;
Данная функция изменяет числовой формат не только в одной отдельно взятой ячейке, а также в группе ячеек. Это определяется значением аргумента range:string. Смотрите примеры: 'A:A' - изменение формата во всех ячейках столбца A, '2:5' - изменение формата во всех ячейках столбцов со второй по пятую включительно, 'A:C' - изменение формата во всех ячейках столбцов с A по C включительно; 'A1:C5' - изменение формата во всех ячейках области, ограниченной колонками A...C и строками 1...5 включительно.
Выравнивание текста в ячейке
Для выравнивания по горизонтали используется свойство HorizontalAlignment объекта Range, которое применяем в функции SetHorizontalAlignment. Если записывать в аргумент alignment:integer этой функции определенные числовые константы, то получим различные варианты выравнивания текста по горизонтали. Смотрите список констант и функцию, реализующую выравнивание текста по горизонтали.
const
xlHAlignCenter=-4108;
xlHAlignDistributed=-4117;
xlHAlignJustify=-4130;
xlHAlignLeft=-4131;
xlHAlignRight=-4152;
xlHAlignCenterAcrossSelection=7;
xlHAlignFill=5;
xlHAlignGeneral=1;
Function SetHorizontalAlignment (sheet:variant;range:string;alignment:integer):boolean;
begin
SetHorizontalAlignment:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range [range].HorizontalAlignment:=alignment;
except
SetHorizontalAlignment:=false;
end;
End;
Для выравнивания по вертикали используем свойство VerticalAlignment объекта Range. Смотрите набор констант и функцию SetVerticalAlignment.
const
xlVAlignBottom=-4107;
xlVAlignCenter=-4108;
xlVAlignDistributed=-4117;
xlVAlignJustify=-4130;
xlVAlignTop=-4160;
Function SetVerticalAlignment (sheet:variant;range:string;alignment:integer):boolean;
begin
SetVerticalAlignment:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range [range].VerticalAlignment:=alignment;
except
SetVerticalAlignment:=false;
end;
End;
Другие режимы отображения текста в ячейке
Угол, под которым текст отображается в ячейке, определяется свойством Orientation объекта Range. Значение Orientation может находиться в пределах от -90 до 90. Функция SetOrientation реализует эту возможность в приложениях Delphi.
Function SetOrientation (sheet:variant;range:string; orientation:integer):boolean;
begin
SetOrientation:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range[range].Orientation:=orientation;
except
SetOrientation:=false;
end;
End;
Текст, ширина которого больше ширины ячейки, может отображаться несколькими строками (переносом по словам) или одной строкой. Это свойство ячейки содержится в поле WrapText объекта Range. Функция SetWrapText изменяет это поле и режим отображения текста большой длины.
Function SetWrapText(sheet:variant;range:string;WrapText:boolean):boolean;
begin
SetWrapText:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range [range].WrapText:=WrapText;
except
SetWrapText:=false;
end;
End;
Можно использовать и альтернативный способ для размещения текста большой длины в ячейке. Он основан на автоподборе ширины текста под ширину ячейки. Свойство.ShrinkToFit объекта Range определяет этот режим отображения. Смотрите функцию SetShrinkToFit. Если установлен режим "перенос по словам", то действие этой функции отменяется.
Function SetShrinkToFit (sheet:variant;range:string;ShrinkToFit:boolean):boolean;
begin
SetShrinkToFit:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range[range].ShrinkToFit:=ShrinkToFit;
except
SetShrinkToFit:=false;
end;
End;
Несколько ячеек можно объединить. Для этой цели используется свойство MergeCells объекта Range[range], где range - область для объединения, например "A1:C2". Если в MergeCells записывает значение True, то это приводит к объединению ячеек. Для реализации в приложениях на Delphi используем функцию SetMergeCells.
Function SetMergeCells (sheet:variant;range:string;MergeCells:boolean):boolean;
begin
SetMergeCells:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Range [range].MergeCells:=MergeCells;
except
SetMergeCells:=false;
end;
End;
В приложении добавить кнопки и прописать обработчик нажатия:
«Запись в ячейку»:
t:=Edit5.text;
SetRange(t,Edit6.text,Edit7.text);
«Чтение ячейки»:
t:=Edit8.Text;
GetRange(t,Edit9.text);
«Ширина столбца»:
t:=Edit10.Text;
SetColumnWidth(t,Edit11.Text,StrToFloat(Edit12.Text));
«Высота строки»:
t:=Edit13.Text;
SetRowHeight(t,Edit14.Text,StrToFloat(Edit15.Text));
«Установить числовой формат»:
GetFormatRange ('Лист1','A1');
SetFormatRange ('Лист1','A1','0,000');
«Выровнять текст по горизонтали»
const
xlHAlignCenter=-4108;
xlHAlignDistributed=-4117;
xlHAlignJustify=-4130;
xlHAlignLeft=-4131;
xlHAlignRight=-4152;
xlHAlignCenterAcrossSelection=7;
xlHAlignFill=5;
xlHAlignGeneral=1;
begin
SetHorizontalAlignment ('Лист1','A1',-4108);
end;
«Выровнять текст по вертикали»
const
xlVAlignBottom=-4107;
xlVAlignCenter=-4108;
xlVAlignDistributed=-4117;
xlVAlignJustify=-4130;
xlVAlignTop=-4160;
begin
SetVerticalAlignment ('Лист1','A1',-4108);
«Другое отображение текста»:
SetOrientation ('Лист1','A1',50);
«Перенос текста»:
SetWrapText ('Лист1','A1',true);
«Автоподбор ширины ячеек»:
SetShrinkToFit ('Лист1','A1',true);
«Объединение ячеек»:
SetMergeCells ('Лист1','A1:C2',true)