Экспорт документов Excel

Материал из DRKB


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

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

Подключение[править | править код]

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

var 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Левый нижний колонтитул';


Author: JB
Source: http://asportal.h16.ru
ID: 04402