Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

Автор: JB
http://asportal.h16.ru

Эта статья первая из цикла статей посвященных экспорту документов в 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Левый нижний колонтитул';

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

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
97K
03 июля 2016 года
Александр Булгаков
0 / / 03.07.2016
+1 / -0
Мне нравитсяМне не нравится
3 июля 2016, 22:22:06
Как программно изменить ширину или высоту ячейки?
2.
87K
12 ноября 2012 года
Антон Старостин
0 / / 12.11.2012
+2 / -0
Мне нравитсяМне не нравится
12 ноября 2012, 11:00:00
Спасибо за статью. Взял только пару строк, ибо когда понадобилось экспортировать, искал всё сам и сожалею теперь, что сразу не попал на эту статью, потому что тут собрано все, что мне было нужно =)
3.
57K
16 января 2010 года
madman25
0 / / 16.01.2010
+6 / -0
Мне нравитсяМне не нравится
16 января 2010, 16:14:52
И хоть прошло много времени с даты написания, но все равно) СПАСИБО! автору за статью, как раз то, что надо было)
4.
33K
25 января 2008 года
Zhmenia
9 / / 25.01.2008
+0 / -2
Мне нравитсяМне не нравится
14 сентября 2008, 01:33:00
Может кто-нибудь знает как использовать R1C1-формат?
5.
1.9K
26 января 2006 года
SABROG
242 / / 26.01.2006
+1 / -2
Мне нравитсяМне не нравится
10 сентября 2006, 14:42:48
Сие под *nix'aми будет работать только в том случае, если на них стоит Wine или эмулятор винды. Ровно как и Excel'a под *nix'ы нету и не будет. Зато есть OpenOffice, но там уже свой набор методов и библиотек. Вообще OLE технология штука тормозная, особенно когда реч идет об экспорте данных в Excel. Лично я разобрал формат XML Spreedsheet и создаю документы сам, путем создания обычного XML файла, для этих целей использую libxml2. Жалко что этот формат не позволяет сохранять картинки или другие внедряемые объекты, но для этого я уже использую OLE.
6.
9.7K
14 апреля 2006 года
elrevin
31 / / 14.04.2006
+3 / -2
Мне нравитсяМне не нравится
4 августа 2006, 19:34:18
Причем сдесь Юниксы?
7.
12K
29 июля 2005 года
WarWar
7 / / 29.07.2005
+1 / -2
Мне нравитсяМне не нравится
31 июля 2006, 16:20:27
неужели сие будет работать под юниксами??
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог