Delphi excel шрифт жирный

Творец
****

Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329

Шрифты и цвета.

Для установки шрифта и размера текста выделите нужный диапазон и установите свойство Name объекта-свойства Font объекта Selection или свойство Size для изменения размера:

Код

Excel.ActiveWorkBook.WorkSheets[1].Range['F1'].Select;
Excel.Selection.Font.Name:='Courier New';
Excel.Selection.Font.Size:=18;

    Если Вы хотите установить жирный или, например, наклонный стиль написания текста установите соответствующие свойства:

Код

Excel.ActiveWorkBook.WorkSheets[1].Range['G1'].Select;
Excel.Selection.Font.Bold:=true; // Для жирного текста
Excel.Selection.Font.Italic:=true; // Для наклонного текста

    Для указания цвета текста измените свойство ColorIndex все того же объекта Font:

Код

Excel.ActiveWorkBook.WorkSheets[1].Range['A1'].Select;
Excel.Selection.Font.ColorIndex:=3;

    Вот несколько индексов цветов:

Индекс — Цвет
0 — Авто
2 — Белый
3 — Красный
5 — Синий
6 — Желтый
10 — Зеленый

Для изменения цвета фона ячейки используйте объект Interior свойства Selection:

Код

Excel.ActiveWorkBook.WorkSheets[1].Range['H1'].Select;
Excel.Selection.Interior.ColorIndex:=3; // Цвет

Добавлено @ 11:06 
Понадобятся константы:
const

Код

xlContinuous=1;
xlThin=2;
xlTop = -4160;
xlCenter = -4108;

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Итак, сегодня разберемся как сделать наш лист Excel более красивым, а именно разберемся со следующими вопросами:

    1. Как добраться до конкретной границы ячейки?
    2. Как изменить внешний вид границы?
    3. Как сделать заливку ячеек цветом?
    4. Как изменить шрифт в ячейках?

1. Как добраться до конкретной границы ячейки?

Excel_BordersПеред Вами окно изменения формата ячеек. Вкладка «Границы». Как видите Excel может отрисовывать следующие границы ячеек:

  • верхнюю
  • нижнюю
  • левую
  • правую
  • диагональную из верхнего левого угла в нижний правый
  • диагональную из верхнего правого угла в нижний левый

Если Вы выбираете диапазон ячеек, то дополнительно добавляются ещё два вида границ:

  • внутренние горизонтальные
  • внутренние вертикальные.

Кроме этого, Вы можете определить свой стиль линий для прорисовки и цвет линий. В самом Excel работа с форматом ячеек достаточно прозрачна и ясна. А вот при работе с Excel в Delphi все обстоит не так уж и радужно :)

Прежде чем браться за прорисовку границ, следует определиться — какой объект Вы будете для этого использовать. Вы можете прорисовать границу с помощью объектов:

  1. Cells — ячейка
  2. Range — диапазон ячеек
  3. UsedRage — диапазон занятых ячеек

Я обычно использую третий вариант (UsedRange), так как работаю с форматами ячеек после того как перешлю необходимые данные в Excel. Кроме того, если пересылается большая таблица с данными, то использовать Cells — значит очень сильно «подвесить» свое приложение, так как надо будет добраться до каждой ячейки и изменить её формат.

Итак, будем использовать UsedRange. Теперь разберемся как нам добраться до границ.

Для того, чтобы получить доступ к коллекции границ объекта достаточно воспользоваться объектом Borders. Так как нам необходим доступ не ко всем границам, а только к конкретной, то после Borders необходимо указывать индекс границы.  В Excel определены следующие константы:

xlDiagonalDown 5 Диагональная от верхнего левого угла в нижний правый каждой ячейки в диапазоне
xlDiagonalUp 6 Диагональная из нижнего левого угла в правый верхний каждой ячейки в диапазоне.
xlEdgeBottom 9 Нижняя для всего диапазона ячеек
xlEdgeLeft 7 Левая для всего диапазона ячеек.
xlEdgeRight 10 Правая для всего диапазона ячеек.
xlEdgeTop 8 Верхняя для всего диапазона ячеек.
xlInsideHorizontal 12 Горизонтальные границы всех внутренних ячеек диапазона
xlInsideVertical 11 Вертикальные границы всех внутренних ячеек диапазона

Теперь переносим эти константы в наш модуль работы с Excel:

uses ....
const
  xlDiagonalDown = 5;
  xlDiagonalUp = 6;
  xlEdgeBottom = 9;
  xlEdgeLeft = 7;
  xlEdgeRight = 10;
  xlEdgeTop = 8;
  xlInsideHorizontal = 12;
  xlInsideVertical = 11;
....

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

MyExcel.ActiveWorkBook.ActiveSheet.UsedRange.Borders[xlEdgeBottom]

Аналогичным образом Вы можете получить доступ к любой из восьми границ.

2. Как изменить внешний вид границы?

Доступ к границе получен. Теперь можно приступать к изменению внешнего вида.

Объект Borders имеет следующие свойства:

  • LineStyle — стиль линии границы
  • ColorIndex — индекс цвета границы
  • Weight — толщина границы

Для каждого из этих свойств в Excel определены свои счётчики (Enumerators) или, говоря на языке Delphi — константы.

Стили линий (LineStyle) могут быть следующие:

xlContinuous 1 Непрерывная линия
xlDash -4115 Пунктирная линия
xlDashDot 4 Пунктир с точкой
xlDashDotDot 5 Пунктир с двумя идущими подряд точками
xlDot -4118 Линия из точек
xlDouble -4119 Двойная линия
xlLineStyleNone -4142 Без линий
xlSlantDashDot 13 Наклонная пунктирная

Стандартные индексы цветов, которые вы можете использовать при прорисовке границы представлены на рисунке:

Colors

Для толщины линии определены константы:

xlHairline 1 Самая тонкая граница
xlMedium -4138 Средняя толщина
xlThick 4 Толстая граница
xlThin 2 Тонкая граница

Определите эти константы в своем модуле Delphi и можете приступать к прорисовке границ. Например, нам необходимо прорисовать внешние границы таблицы двойной линией, а внутренние — тонкими сплошными. Цвета линий оставим по умолчанию — черными. Тогда код Delphi будет выглядеть следующим образом:

...
with MyExcel.ActiveWorkBook.ActiveSheet.UsedRange do
  begin
    Borders[xlEdgeBottom].LineStyle:=xlDouble;
    Borders[xlEdgeTop].LineStyle:=xlDouble;
    Borders[xlEdgeLeft].LineStyle:=xlDouble;
    Borders[xlEdgeRight].LineStyle:=xlDouble;
    Borders[xlInsideHorizontal].LineStyle:=xlSolid;
    Borders[xlInsideVertical].LineStyle:=xlSolid;
  end;
...

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

Переходим к следующему вопросу.

3. Как сделать заливку ячеек цветом?

Для заливки ячеек цветом можно использовать те же константы, что и при работе с ячейками. Однако ни объект Range ни Cells не имеют свойства ColorIndex. Чтобы получить доступ к заливке ячейки или диапазона необходимо воспользоваться свойством Interior, которое дает доступ к внутренней части объекта. Например, выполнив операцию:

MyExcel.ActiveWorkBook.ActiveSheet.UsedRange.Interior

вы получите доступ к внутренней части диапазона занятых ячеек, т.е. по сути, ко всей таблице. А получив такой доступ, Вы можете делать с объектом всё, что угодно. Например изменим цвет нашей таблицы на красный:

MyExcel.ActiveWorkBook.ActiveSheet.UsedRange.Interior.ColorIndex:=3;

4. Как изменить шрифт в ячейках?

Для того, чтобы получить доступ к шрифтам, необходимо добраться до одного из свойств UsedRange, а именно до свойства Font, которое и вернет нам объект, позволяющий изменять шрифт, цвет шрифта и прочие атрибуты . Например, изменим цвет шрифта в таблице на синий:

MyExcel.ActiveWorkBook.ActiveSheet.UsedRange.Font.ColorIndex:=5;

Аналогичным образом, через объект Font Вы можете также изменить:

  • Толщину шрифта
  • Наклон
  • Размер
  • Сделать текст подчёркнутым и т.д.

Для этого достаточно воспользоваться одним из свойств объекта Fonts.

5
2
голоса

Рейтинг статьи

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Создание документа

Внимание!!! Всегда когда создаете объект интерфейса, заключайте  процедуру создания в модуль обработки ошибок:
try
создаем интерфейс;
формируем отчет;
освобождаем интерфейс;
Except
обрабатываем ошибки;
освобождаем интерфейс;
end;

Далее идет краткий справочник по основным функциям работы с EXCEL

try
// создаем обьект EXCEL
excel := CreateOleObject(‘Excel.Application’);

// Чтоб не задавал вопрос о сохранении документа
excel.DisplayAlerts := false;

// создаем новый документ рабочую книгу
excel.WorkBooks.Add;

// или загружаем его из директории с программой
excel.WorkBooks.Open(GetCurrentDir() + ‘отчет.xls’);

{ GetCurrentDir()- возвращает путь к директории с программой}

// Делаем его видимым данную функцию после отладки и тестирования лучше использовать в конце, после сформирования отчета (это ускоряет процесс вывода данных в отчет)
excel.Visible := true;

//задаем тип формул в формате R1C1
excel.Application.ReferenceStyle := xlR1C1;

// задаем тип формул в формате A1
excel.Application.ReferenceStyle := xlA1;

// Задаем название первому и второму листу
excel.WorkBooks[1].WorkSheets[1].Name := ‘Отчет1’;
excel.WorkBooks[1].WorkSheets[2].Name := ‘Отчет2’;

//задаем формат числа для первой и четвертой колонки формат числа
excel.WorkBooks[1].WorkSheets[1].Columns[1].NumberFormat := ‘0,00’;
excel.WorkBooks[1].WorkSheets[1].Columns[4].NumberFormat := ‘0,0’;

// задаем ширину первой и второй колонки
excel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 10;
excel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 20;

// задаем начертание, цвет, размер и тип шрифта для первого ряда
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Bold := True; //жирный
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Color := clRed;  // цвет красный
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Size := 12;  //размер 12
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Name := ‘Times New Roman’;  //шрифт

//присваиваем ячейке 1,4 и 2,4 значения (1 — ряд, 4 — колонка)
excel.WorkBooks[1].WorkSheets[1].Cells[1, 4] := ‘А так можно внести значение в ячейку’;
excel.WorkBooks[1].WorkSheets[1].Cells[2, 4] := ‘А так можно внести значение в ячейку’;

//ввод в ячейку ‘A12’ формулы ‘=b5+c4’
excel.WorkBooks[1].WorkSheets[1].Range[‘A12′].Formula:=’=b5+c4’;

// Выравнивам первый ряд по центру по вертикали
excel.WorkBooks[1].WorkSheets[1].Rows[1].VerticalAlignment := xlCenter;

// Выравнивам первый ряд по центру по горизонтали
excel.WorkBooks[1].WorkSheets[1].Rows[1].HorizontalAlignment := xlCenter;

// Выравнивам в ячейке по левому краю
excel.WorkBooks[1].WorkSheets[1].Cells[3, 2].HorizontalAlignment := xlLeft;

// Выравнивам в ячейке по правому краю
excel.WorkBooks[1].WorkSheets[1].Cells[3, 4].HorizontalAlignment := xlRight;

// Обьединяем ячейки ‘A1:A8’
excel.WorkBooks[1].WorkSheets[1].Range[‘A1:A8’].Merge;

// Поворачиваем слова под углом 90 градусов для второго ряда
excel.WorkBooks[1].WorkSheets[1].Rows[2].Orientation := 90;

// Поворачиваем слова под углом 45 градусов для диапазона ячеек ‘B3:D3’
excel.WorkBooks[1].WorkSheets[1].Range[‘B3:D3’].Orientation := 45;

//рисуем границы  выделенного диапазона левая
excel.Selection.Borders[xlEdgeLeft].LineStyle := xlContinuous; // стиль линии сплошная
excel.Selection.Borders[xlEdgeLeft].Weight := xlMedium;// толщина линии

//рисуем границы  выделенного диапазона верхняя
excel.Selection.Borders[xlEdgeTop].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeTop].Weight := xlMedium;

//рисуем границы  выделенного диапазона нижняя
excel.Selection.Borders[xlEdgeBottom].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeBottom].Weight := xlMedium;

//рисуем границы  выделенного диапазона правая
excel.Selection.Borders[xlEdgeRight].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeRight].Weight := xlMedium;

//рисуем границы  выделенного диапазона вертикальные внутрениие
excel.Selection.Borders[xlInsideVertical].LineStyle := xlContinuous;
excel.Selection.Borders[xlInsideVertical].Weight := xlMedium;

//рисуем границы  выделенного диапазона горизонтальные внутрениие
excel.Selection.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
excel.Selection.Borders[xlInsideHorizontal].Weight := xlMedium;

//автозаполнение выделенного диапазона
//для примера заполним область ячеек ‘A10:C10’ словом ‘привет’
//и размножим его вниз еще на пять ячеек ‘A10:C15’

excel.WorkBooks[1].WorkSheets[1].Range[‘A10:C10′].Value:=’привет’;

//выделяем диапазон ячеек ‘A10:C10’
excel.WorkBooks[1].WorkSheets[1].Range[‘A10:C10’].Select;

//автозаполняем (копируем) выделенным диапазоном область ячеек ‘A10:C15’
excel.selection.autofill(excel.WorkBooks[1].WorkSheets[1].Range[‘A10:C15’],xlFillDefault);

//отключаем предупреждения, чтобы не задавал вопросов о сохранении и других
excel.DisplayAlerts := False;

 //сохраняем документ в формате Excel 97-2003
 excel.ActiveWorkBook.Saveas(GetCurrentDir() + ‘отчет.xls’,xlExcel8);

 //сохраняем документ в текущем формате Excel 2007
 excel.ActiveWorkBook.Saveas(GetCurrentDir() + ‘отчет.xlsx’);

//закроем все книги
excel.Workbooks.Close;

//закрываем Excel
excel.Application.quit;

//освобождаем интерфейсы
excel := Unassigned;

Except

//обрабатываем ошибки
showmessage(‘Внимание! Произошла ошибка при создании MS Excel приложения’);

//закроем все книги
excel.Workbooks.Close;

//закрываем Excel
excel.Application.quit;

//освобождаем интерфейсы
excel := Unassigned;
end;
end;

При работе с листом Excel мы можем использовать следующие варианты:
— работать с областью Range[‘B3:D3’];
— работать с ячейкой Cells[2, 4] где 2 — ряд, 4 — колонка;
— работать с рядами Rows[1] или с диапазоном рядов Rows[‘1:5’];
— работать с колонками Columns[1] или диапазоном колонок Columns[‘A:I’];

Range[‘A1’] и Cells[1, 1] обозначают одно и тоже.

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

Например так:
//закроем все книги
excel.Workbooks.Close;

//закрываем Excel
excel.Application.quit;

//освобождаем интерфейсы
sheet:=Unassigned; //интерфейс листа если он был создан
WorkBook := Unassigned;//интерфейс рабочей книги если он был создан
excel := Unassigned;//интерфейс самого предложения если он был создан

end;

Ниже привожу пример вывода в Excel из Delphi таблицы умножения с подробными комментариями.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, comobj, StdCtrls, Excel_TLB;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  excel: variant; // Переменная в которой создаётся объект EXCEL
  MyData: variant; // Переменная в которой формируется таблица умножения
  i,j:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
// Обьект EXCEL
excel := CreateOleObject(‘Excel.Application’);
// Чтоб не задавал вопрос о сохранении документа
excel.DisplayAlerts := false;
// новый документ
excel.WorkBooks.Add;

//объявляем вариантный массив
MyData := VarArrayCreate([1,9,1,9],varVariant);
for I := 1 to 9 do
for J := 1 to 9 do
  MyData[i,j]:=i*j;

// Обьединяем ячейки ‘A1:I1’
excel.WorkBooks[1].WorkSheets[1].Range[‘A1:I1’].Merge;
//Пишем заголовок
excel.WorkBooks[1].WorkSheets[1].Range[‘A1′].Value:=’Таблица умножения’;
// Выравнивам заголовок по центру
excel.WorkBooks[1].WorkSheets[1].Range[‘A1’].HorizontalAlignment := xlCenter;
// задаем ширину  колонок с A по I
excel.WorkBooks[1].WorkSheets[1].Columns[‘A:I’].ColumnWidth := 3;

//выделяем область таблицы умножения [‘A2:I10’] и рисуем границы
excel.WorkBooks[1].WorkSheets[1].Range[‘A2:I10’].select;
//рисуем границы  выделенного диапазона левая
excel.Selection.Borders[xlEdgeLeft].LineStyle := xlContinuous; // стиль линии сплошная
excel.Selection.Borders[xlEdgeLeft].Weight := xlThin;// толщина линии
//рисуем границы  выделенного диапазона верхняя
excel.Selection.Borders[xlEdgeTop].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeTop].Weight := xlThin;
//рисуем границы  выделенного диапазона нижняя
excel.Selection.Borders[xlEdgeBottom].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeBottom].Weight := xlThin;
//рисуем границы  выделенного диапазона правая
excel.Selection.Borders[xlEdgeRight].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeRight].Weight := xlThin;
//рисуем границы  выделенного диапазона вертикальные внутрениие
excel.Selection.Borders[xlInsideVertical].LineStyle := xlContinuous;
excel.Selection.Borders[xlInsideVertical].Weight := xlThin;
//рисуем границы  выделенного диапазона горизонтальные внутрениие
excel.Selection.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
excel.Selection.Borders[xlInsideHorizontal].Weight := xlThin;

//присваиваем диапазону [‘A2:I10’] значения вариантного массива  MyData это значительно ускоряет работу, нежели вывод по //ячеечно

excel.WorkBooks[1].WorkSheets[1].Range[‘A2:I10’].Value:=MyData;

// Делаем его видимым
excel.Visible := true;
//освобождаем интерфейсы
MyData:= Unassigned;
excel := Unassigned;
Except
showmessage(‘Внимание! Произошла ошибка при создании MS Excel приложения’);
//закрываем Excel
excel.Application.quit;
//освобождаем интерфейсы
MyData:= Unassigned;
excel := Unassigned;
end;
end;

end.

При написании статьи использовался материал с сайта http://vlad2000.h1.ru/Frames/Statyi/page_14.html

Студворк — интернет-сервис помощи студентам

Тут иногда бывают вопросы о том, как можно из Delphi работать с документами Excel. Решил написать такую инструкцию, где рассказано об основных действиях.

Для работы с OLE нужно к строке Uses добавить модуль ComObj. Так же нужно объявить переменную типа Variant.

Delphi
1
2
Uses ComObj;
Var Ap : Variant;

Что бы начать работу с Экселем, нужно создать OLE объект:
Ap := CreateOleObject(‘Excel.Application’);

После этого нужно либо создать новую книгу:
Ap.Workbooks.Add;
либо открыть файл:
Ap.Workbooks.Open(<имя файла>);
Что бы открыть файл только для чтения, нужно указать:
Ap.Workbooks.Open(<имя файла>,0,True);
где True и указывает, что файл открывается только для чтения.

По умолчанию окно Excel не будет отображаться… что бы оно появилось, нужно выполнить
Ap.Visible := True;
Но это желательно делать в последний момент, т.к. когда окно видимое, то все изменения в нём происходят медленнее. Поэтому, лучше оставить его невидимым, сделать там все необходимые изменения, и только после этого сделать его видимым или закрыть. Если вы его оставите невидимым, то процесс EXCEL.EXE останется висеть в памяти, даже когда будет закрыто ваше приложение.

Что бы закрыть Excel, выполните Ap.Quit или Ap.Application.Quit. Честно говоря, я не знаю, чем они отличаются.
Что бы при закрытии не выдавался запрос на сохранение файла, можно отключить сообщения:
Ap.DisplayAlerts := False;

Что бы записать или прочитать содержимое ячейки можно использовать Ap.Range[<имя ячейки>] или Ap.Cells[<позиция по Y>,<позиция по X>]
Ap.Range[‘D1’] := ‘Ляляля’;
Ap.Cells[1,4] := ‘Ляляля’;

Эти две строки выполняют одно и тоже действие: записывают строку «Ляляля» в ячейку D1
Читать значение из ячейки таким же образом:
S := Ap.Range[‘D1’];
или
S := Ap.Cells[1,4];
Так же можно записывать значение сразу в несколько ячеек… можно перечислить через точку с запятой или указать диапазон через двоеточие:

Delphi
1
2
3
4
5
6
7
8
Ap.Range['A2;B5;D1'] := 'Ляляля'; // записывает строку в 3 ячейки: A2, B5 и D1
Ap.Range['A2:D5'] := 'Ляляля'; // записывает строку во все ячейки диапазона A2:D5
Ap.Range[Ap.Cells[2,1],Ap.Cells[5,4]] := 'Ляляля'; // Тоже самое, что и предыдущая строка
Ap.Cells := 'Ляляля'; // Изметятся все ячейки
Ap.Rows['2'] := 'Ляляля'; // Изменятся все ячейки второй строки
Ap.Rows[2] := 'Ляляля';  // Тоже самое
Ap.Columns['B'] := 'aaa';  // Изменятся все ячейки в столбце B
Ap.Columns[2] := 'aaa';  // Тоже самое

Изменение свойств текста
Всё это можно применять как к отдельным ячейкам, так и к группам ячеек, строк, столбцов и т.п. Я буду показывать примеры на Ap.Cells… но Вам никто не мешает использовать Ap.Range[‘D5’], Ap.Range[‘A2:E8’], Ap.Columns[‘B:F’] и т.п.

Delphi
1
2
3
Ap.Cells.Font.Bold := True;  // Жирный шрифт
Ap.Cells.Font.Italic := True; // Курсив
Ap.Cells.Font.Underline := True; // Подчёркивание

Изменение цвета фона ячеек:

Delphi
1
2
Ap.Rows[1].Interior.Color := rgb(192, 255, 192); // Первую строку закрашиваем в зелёный цвет, используя RGB
Ap.Cells[2,1].Interior.Color := clRed; // Ячейку A2 закрашиваем в красный цвет, используя константу clRed

Наверное, вы обращали внимание, что в новом документе появляются 3 листа (их список отображается внизу программы Excel). По умолчанию, мы работаем с активным листом (сразу после создания это первый лист). Но при желании, мы можем использовать и другие листы. Доступ к ним осуществляется с помощью Worksheets[<номер листа>]. Обратите внимание, что нумеруются они начиная с 1 (а не с 0, как привыкли все программисты).

Delphi
1
2
Ap.Worksheets[1].Name := 'Первый лист'; // Изменить название первого листа
Ap.Worksheets[2].Name := 'Ещё один лист'; // Изменить название второго листа

Свойства страницы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Колонтитулы:
Ap.Worksheets[1].PageSetup.LeftFooter := 'Левый нижний колонтитул';
Ap.Worksheets[1].PageSetup.LeftHeader := 'Левый верхний колонтитул';
Ap.Worksheets[1].PageSetup.CenterFooter := 'Центральный нижний колонтитул';
Ap.Worksheets[1].PageSetup.CenterHeader := 'Центральный верхний колонтитул';
Ap.Worksheets[1].PageSetup.RightFooter := 'Правый нижний колонтитул';
Ap.Worksheets[1].PageSetup.RightHeader := 'Правый верхний колонтитул';
 
Ap.Worksheets[1].PageSetup.Draft := True; // Для черновой печати
Ap.Worksheets[1].PageSetup.BlackAndWhite := True;  // Для чёрно-белой печати
Ap.Worksheets[1].PageSetup.PrintGridlines := True; // При печати будет видна сетка
Ap.Worksheets[1].PageSetup.PrintHeadings := True;  // При печати будут печататься названия столбцов и номера строк
Ap.Worksheets[1].PageSetup.FirstPageNumber := 5;   // Начать нумерацию страниц с пятой
Ap.Worksheets[1].PageSetup.Orientation := 1;  // Ориентация бумаги: 1=Книжная, 2=Альбомная
Ap.Worksheets[1].PageSetup.PaperSize := 9; // Указать размер бумаги. 8=А3, 9=А4, 11=А5

Ниже приведён более полный список размеров бумаги из модуля ExcelXP:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const
  xlPaper10x14 = $00000010;
  xlPaper11x17 = $00000011;
  xlPaperA3 = $00000008;
  xlPaperA4 = $00000009;
  xlPaperA4Small = $0000000A;
  xlPaperA5 = $0000000B;
  xlPaperB4 = $0000000C;
  xlPaperB5 = $0000000D;
  xlPaperCsheet = $00000018;
  xlPaperDsheet = $00000019;
  xlPaperEnvelope10 = $00000014;
  xlPaperEnvelope11 = $00000015;
  xlPaperEnvelope12 = $00000016;
  xlPaperEnvelope14 = $00000017;
  xlPaperEnvelope9 = $00000013;
  xlPaperEnvelopeB4 = $00000021;
  xlPaperEnvelopeB5 = $00000022;
  xlPaperEnvelopeB6 = $00000023;
  xlPaperEnvelopeC3 = $0000001D;
  xlPaperEnvelopeC4 = $0000001E;
  xlPaperEnvelopeC5 = $0000001C;
  xlPaperEnvelopeC6 = $0000001F;
  xlPaperEnvelopeC65 = $00000020;
  xlPaperEnvelopeDL = $0000001B;
  xlPaperEnvelopeItaly = $00000024;
  xlPaperEnvelopeMonarch = $00000025;
  xlPaperEnvelopePersonal = $00000026;
  xlPaperEsheet = $0000001A;
  xlPaperExecutive = $00000007;
  xlPaperFanfoldLegalGerman = $00000029;
  xlPaperFanfoldStdGerman = $00000028;
  xlPaperFanfoldUS = $00000027;
  xlPaperFolio = $0000000E;
  xlPaperLedger = $00000004;
  xlPaperLegal = $00000005;
  xlPaperLetter = $00000001;
  xlPaperLetterSmall = $00000002;
  xlPaperNote = $00000012;
  xlPaperQuarto = $0000000F;
  xlPaperStatement = $00000006;
  xlPaperTabloid = $00000003;
  xlPaperUser = $00000100;

Распечатать

Delphi
1
Ap.Worksheets[1].PrintOut;

Выделение
Excel.Range[Excel.Cells[1, 1], Excel.Cells[5, 3]].Select;
а также любые другие комбинации выбора ячейки с окончанием .select — выбор 1 или группы ячеек

С выбранными ячейками возможны следующие преобразования:

1) объединение ячеек
Excel.Selection.MergeCells:=True;
2) перенос по словам
Excel.Selection.WrapText:=True;
3) горизонтальное выравнивание
Excel.Selection.HorizontalAlignment:=3;
при присваивании значения 1 используется выравнивание по умолчанию, при 2 — выравнивание слева, 3 — по центру, 4 — справа.
4) вериткальное выравнивание
Excel.Selection.VerticalAlignment:=1;
присваиваемые значения аналогичны горизонтальному выравниванию.
5) граница для ячеек
Excel.Selection.Borders.LineStyle:=1;
При значении 1 границы ячеек рисуются тонкими сплошными линиями.
Кроме этого можно указать значения для свойства Borders, например, равное 3. Тогда установится только верхняя граница для блока выделения:
Excel.Selection.Borders[3].LineStyle:=1;
Значение свойства Borders задает различную комбинацию граней ячеек.
В обоих случаях можно использовать значения в диапазоне от 1 до 10. ]

//9 и 11 — лучшие

\\\\\\\\\\\\\\\\

Установка пароля для активной книги может быть произведена следующим образом:

Delphi
1
2
3
4
5
6
try
// попытка установить пароль
Excel.ActiveWorkbook.protect('pass');
except
// действия при неудачной попытке установить пароль
end;

где pass — устанавливаемый пароль на книгу.

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

Delphi
1
Excel.ActiveWorkbook.Unprotect('pass');

где pass — пароль, установленный для защиты книги.

Установка и снятие пароля для активного листа книги Excel производится командами

Delphi
1
2
Excel.ActiveSheet.protect('pass'); // установка пароля
Excel.ActiveSheet.Unprotect('pass'); // снятие пароля

где pass — пароль, установленный для защиты книги.
Вспомогательные операции в EXCEL

Удаление строк со сдвигом вверх:

Delphi
1
2
Excel.Rows['5:15'].Select;
Excel.Selection.Delete;

при выполнении данных действий будут удалены строки с 5 по 15.

Установка закрепления области на активном листе Excel

Delphi
1
2
3
4
5
6
// снимаем закрепление области, если оно было задано
Excel.ActiveWindow.FreezePanes:=False;
// выделяем нужную ячейку, в данном случае D3
Excel.Range['D3'].Select;
// устанавливаем закрепление области
Excel.ActiveWindow.FreezePanes:=True;

Спасибо VampireKB за дополнения

Эта статья первая из цикла статей посвященных экспорту документов в MS Excel. В ней мы рассмотрим подключение к Excel, заполнению ячеек и простейшее оформление документа.

Я не буду углубляться в теорию, рассказывать о том как работает OLE механизм, начнем с самого главного.

Подключение.

Для подключения к Excel и работы с ним нам понадобится переменная типа Variant:

Excel:Variant;

Далее создаем OLE объект:

Excel:=CreateOleObject('Excel.Application');

Добавляем новую книгу:

Excel.Workbooks.Add;

Показываем Excel:

Excel.Visible:=true;

Так же нам понадобятся константы:

const
xlContinuous=1;
xlThin=2;
xlTop = -4160;
xlCenter = -4108;

Текст ячеек.

Теперь до любой ячейки мы можем добраться следующим образом:

Excel.ActiveWorkBook.WorkSheets[1].Cells[1, 2]:='Текст ячейки (1,2)';

Объект Range, выделение диапазона, объединение ячеек, выравнивание.

Представьте такую ситуацию: необходимо объединить несколько ячеек и выровнять текст в них по центру.

Выделяем:

Excel.ActiveWorkBook.WorkSheets[1].Range['A1:G1'].Select;

Объединяем:

Excel.ActiveWorkBook.WorkSheets[1].Range['A1:G1'].Merge;

И выравниваем:

Excel.Selection.HorizontalAlignment:=xlCenter;

Границы и перенос по словам.

Для начала выделяем нужный диапазон а затем…

Показываем границы:

Excel.Selection.Borders.LineStyle:=xlContinuous;
Excel.Selection.Borders.Weight:=xlThin;

И включаем перенос по словам:

Excel.Selection.WrapText:=true;

Пример.

Пример можно скачать здесь

Параметры страницы.

Начнем с полей страницы. Во первых для того чтобы добраться до параметров страницы у листа Excel имеется свойство объект PageSetup его мы и будем использовать. Для установки размеров полей необходимо изменить соответствующие свойства PageSetup, вот эти свойства:

  • LeftMargin — Левое поле
  • RightMargin — Правое поле
  • TopMargin — Верхнее поле
  • BottomMargin — Нижнее поле

Значение размеров полей необходимо указывать в пикселях, к чему мы не очень привыкли, поэтому воспользуемся функцией InchesToPoints объекта Application, которая переводит значение в дюймах в значение в пикселях. Теперь напишем процедуру которая подключит Excel и установит поля равные 0.44 дюйма (приблизительно 1 см):

procedure Connect;
var
  Excel:Variant;
begin
  Excel:=CreateOleObject('Excel.Application');
  Excel.Workbooks.Add;

  Excel.ActiveSheet.PageSetup.LeftMargin:= Excel.Application.InchesToPoints(0.44);
  Excel.ActiveSheet.PageSetup.RightMargin:= Excel.Application.InchesToPoints(0.44);
  Excel.ActiveSheet.PageSetup.TopMargin:= Excel.Application.InchesToPoints(0.44);
  Excel.ActiveSheet.PageSetup.BottomMargin:= Excel.Application.InchesToPoints(0.44);
end;

Иногда полезно уметь установить и ориентацию страницы:

  Excel.ActiveSheet.PageSetup.Orientation:= 2;

Здесь значение ориентации = 2, означает альбомную, при книжной ориентации присвойте Orientation значение 1.

Вы наверное не раз встречали такой отчет в котором таблица с большим количеством строк размещается на нескольких страницах в таких случаях очень удобны сквозные строки, они печатаются на каждой странице отчета:

  Excel.ActiveSheet.PageSetup.PrintTitleRows:='$2:$3';

Здесь мы указываем вторую и третью строки для печати на каждой странице.

Шрифты и цвета.

Для установки шрифта и размера текста выделите нужный диапазон и установите свойство Name объекта-свойства Font объекта Selection или свойство Size для изменения размера:

  Excel.ActiveWorkBook.WorkSheets[1].Range['F1'].Select;
  Excel.Selection.Font.Name:='Courier New';
  Excel.Selection.Font.Size:=18;

Если Вы хотите установить жирный или, например, наклонный стиль написания текста установите соответствующие свойства:

  Excel.ActiveWorkBook.WorkSheets[1].Range['G1'].Select;
  Excel.Selection.Font.Bold:=true; // Для жирного текста
  Excel.Selection.Font.Italic:=true; // Для наклонного текста

Для указания цвета текста измените свойство ColorIndex все того же объекта Font:

  Excel.ActiveWorkBook.WorkSheets[1].Range['A1'].Select;
  Excel.Selection.Font.ColorIndex:=3;

Вот несколько индексов цветов:

  • Индекс — Цвет
  • 0 — Авто
  • 2 — Белый
  • 3 — Красный
  • 5 — Синий
  • 6 — Желтый
  • 10 — Зеленый

Для изменения цвета фона ячейки используйте объект Interior свойства Selection:

  Excel.ActiveWorkBook.WorkSheets[1].Range['H1'].Select;
  Excel.Selection.Interior.ColorIndex:=3; // Цвет

Колонтитулы.

Для добавления колонтитула к документу достаточно указать его содержание:

  Excel.ActiveSheet.PageSetup.LeftFooter:='Левый нижний колонтитул';
  Excel.ActiveSheet.PageSetup.CenterFooter:='Центральный нижний колонтитул';
  Excel.ActiveSheet.PageSetup.RightFooter:='Правый нижний колонтитул';
  Excel.ActiveSheet.PageSetup.LeftHeader:='Левый верхний колонтитул';
  Excel.ActiveSheet.PageSetup.CenterHeader:='Центральный верхний колонтитул';
  Excel.ActiveSheet.PageSetup.RightHeader:='Правый верхний колонтитул';

Для изменения размера шрифта добавьте к колонтитулу управляющий символ «&» и размер шрифта:

  Excel.ActiveSheet.PageSetup.LeftFooter:='&7Левый нижний колонтитул';

На этом пока все. Пример к статье здесь

Понравилась статья? Поделить с друзьями:
  • Delphi excel ширина строки
  • Delphi excel ширина колонки
  • Delphi excel цвета ячеек в excel
  • Delphi excel формулу ячейки
  • Delphi excel формулу в ячейку