Delphi границ ячеек excel

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

Итак, сегодня разберемся как сделать наш лист 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
голоса

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

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

Последовательность действий такая.
Запускаем Excel, на листе рабочей книги выделяем диапазон ячеек и запускаем запись макроса. После запуска, для выделенного диапазона открываем контекстное меню, выбираем: «Формат ячеек…». Откроется окно «Формат ячеек». В этом окне переходим на закладку «Граница» и выполняем такое оформление: внутренние линии тонкие сплошные, внешние обрамляющие линии — толстые сплошные. Жмём «ОК». Затем останавливаем запись макроса. Потом в главном меню надо выбрать: Сервис — Макрос — Редаткор Visual Basic. — Откроется окно редактора Visual Basic. Далее, в главном меню редактора выбираем: View — Project Explorer. — Появится окно проекта. В этом окне дважды щёлкаем модуль с именем «Module1». В этом модуле увидим код макроса:

Visual Basic
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
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 21.04.2011 (Пользователь)
'
 
'
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
End Sub

Из этого кода видно, что линовка выполняется с помощью свойства Borders. При этом вид (стиль) линий задаётся свойством LineStyle, а толщина линий — свойством Weight. Положение линии задаётся параметром, передаваемым свойству Borders.
Теперь разбираемся с константами. Смотрим, например, на строку:

Visual Basic
1
    With Selection.Borders(xlEdgeLeft)

правой кнопкой мыши щёлкаем на слове: xlEdgeLeft и в появившемся контекстном меню выбираем: «Definition». — Откроется окно Браузера Оъектов, в котором мы увидим, что константа xlEdgeLeft относится к группе констант XlBordersIndex. Внизу окна будет показано числовое значение этой константы. Кроме этого в окне будут показаны все константы, относящиеся к группе XlBordersIndex. Выписываем значения нужных нам констант. — Имена констант с числовым значением можно прямо выделять и копировать из строки внизу Браузера Объектов Excel.
Таким же образом выясняем значения констант, связанных со свойствами LineStyle и Weight. В результате в раздел const нашей программы записываем следующее:

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
44
45
46
47
48
49
50
51
52
53
54
const
  M = 7;
  N = 10;
 
  //Константы Excel.
 
  //Группа констант XlBordersIndex. Задаёт расположение линий.
  //
  //Линия по диагонали сверху - вниз.
  xlDiagonalDown = 5;
  //Линия по диагонали снизу - вверх.
  xlDiagonalUp = 6;
  //Линия, обрамляющая диапазон снизу.
  xlEdgeBottom = 9;
  //Линия, обрамляющая диапазон слева.
  xlEdgeLeft = 7;
  //Линия, обрамляющая диапазон справа.
  xlEdgeRight = 10;
  //Линия, обрамляющая диапазон сверху.
  xlEdgeTop = 8;
  //Все горизонтальные линии внутри диапазона.
  xlInsideHorizontal = 12;
  //Все вертикальные линии внутри диапазона.
  xlInsideVertical = 11;
 
  //Группа констант XlBorderWeight. Задаёт стиль линий.
  //
  //(_________) Непрерывная.
  xlContinuous = 1;
  //(_ _ _ _ _) В виде последовательности тире.
  xlDash = -4115;
  //(_._._._._) В виде тире и точек.
  xlDashDot = 4;
  //(_.._.._..) В виде тире и двойных точек.
  xlDashDotDot = 5;
  //(.........) В виде точек.
  xlDot = -4118;
  //(=========) В виде двойной линии.
  xlDouble = -4119;
  //(         ) Отсутствие линии.
  xlLineStyleNone = -4142;
  //(/././././) В виде наклонных тире и точек.
  xlSlantDashDot = 13;
 
  //Группа констант XlBorderWeight. Задаёт толщину линий.
  //
  //Очень тонкая.
  xlHairline = 1;
  //Тонкая
  xlThin = 2;
  //Средняя.
  xlMedium = -4138;
  //Толстая.
  xlThick = 4;

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  //Обрамление таблицы.
  //Внутренние линии делаем сплошными и тонкими.
  exRange.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
  exRange.Borders[xlInsideHorizontal].Weight := xlThin;
  exRange.Borders[xlInsideVertical].LineStyle := xlContinuous;
  exRange.Borders[xlInsideVertical].Weight := xlThin;
  //Обрамление диапазона выполняем сплошными толстыми линиями.
  exRange.Borders[xlEdgeTop].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeTop].Weight := xlThick;
  exRange.Borders[xlEdgeBottom].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeBottom].Weight := xlThick;
  exRange.Borders[xlEdgeLeft].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeLeft].Weight := xlThick;
  exRange.Borders[xlEdgeRight].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeRight].Weight := xlThick;

Предположим, для демонстрации, нам надо сформировать двумерный массив, потом распечатать и оформить
его в Excel. Сделать это можно, например так:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  M = 7;
  N = 10;
 
  //Константы Excel.
 
  //Группа констант XlBordersIndex. Задаёт расположение линий.
  //
  //Линия по диагонали сверху - вниз.
  xlDiagonalDown = 5;
  //Линия по диагонали снизу - вверх.
  xlDiagonalUp = 6;
  //Линия, обрамляющая диапазон снизу.
  xlEdgeBottom = 9;
  //Линия, обрамляющая диапазон слева.
  xlEdgeLeft = 7;
  //Линия, обрамляющая диапазон справа.
  xlEdgeRight = 10;
  //Линия, обрамляющая диапазон сверху.
  xlEdgeTop = 8;
  //Все горизонтальные линии внутри диапазона.
  xlInsideHorizontal = 12;
  //Все вертикальные линии внутри диапазона.
  xlInsideVertical = 11;
 
  //Группа констант XlBorderWeight. Задаёт стиль линий.
  //
  //(_________) Непрерывная.
  xlContinuous = 1;
  //(_ _ _ _ _) В виде последовательности тире.
  xlDash = -4115;
  //(_._._._._) В виде тире и точек.
  xlDashDot = 4;
  //(_.._.._..) В виде тире и двойных точек.
  xlDashDotDot = 5;
  //(.........) В виде точек.
  xlDot = -4118;
  //(=========) В виде двойной линии.
  xlDouble = -4119;
  //(         ) Отсутствие линии.
  xlLineStyleNone = -4142;
  //(/././././) В виде наклонных тире и точек.
  xlSlantDashDot = 13;
 
  //Группа констант XlBorderWeight. Задаёт толщину линий.
  //
  //Очень тонкая.
  xlHairline = 1;
  //Тонкая
  xlThin = 2;
  //Средняя.
  xlMedium = -4138;
  //Толстая.
  xlThick = 4;
var
  exApp, exBook, exSheet, exRange : Variant;
  Arr : array of array of Integer;
  i, j, Row1, Row2, Col1, Col2 : Integer;
begin
  (*
  try
    //Попытка подключиться к уже запущенному экземпляру Excel.
    exApp := GetActiveOleObject('Excel.Application');
  except
    try
      //Попытка запустить и подключиться к Excel.
      exApp := CreateOleObject('Excel.Application');
    except
      MessageDlg(
        'Не удалось подключиться к Excel. Действие отменено.'
        ,mtError, [mbOK], 0
      );
      Exit;
    end;
  end;
  *)
 
  //Попытка запустить и подключиться к Excel.
  exApp := CreateOleObject('Excel.Application');
 
  SetLength(Arr, M, N);
  Randomize;
  for i := 0 to M - 1 do
  for j := 0 to N - 1 do begin
    Arr[i, j] := Random(10); //0..9.
  end;
 
  //Делаем видимым окно Excel.
  exApp.Visible := True;
  //Создаём рабочую книгу.
  exBook := exApp.Workbooks.Add;
  //Подключаемся к первому листу раб. книги.
  exSheet := exBook.Worksheets[1];
 
  //Для ускорения вывода данных в Excel, можно отключать обновление окна Excel.
  //Это полезно выполнять в случае, когда на лист передаётся много данных -
  //например, таблица из нескольких тысяч строк.
  //exApp.ScreenUpdating := False;
 
  //Надпись.
  exSheet.Cells[2, 2].Value := 'Таблица, переданная из внешней программы.';
 
  //Координаты левого верхнего угла таблицы.
  Row1 := 3;
  Col1 := 3;
 
  //Шапка таблицы.
  for j := 0 to N - 1 do begin
    exSheet.Cells[Row1, Col1 + j].Value := 'Колонка №' + IntToStr(j + 1);
  end;
 
  //Переносим данные на лист Excel.
  Row2 := Row1 + 1;
  for i := 0 to M - 1 do begin
    Col2 := Col1;
    for j := 0 to N - 1 do begin
      exSheet.Cells[Row2, Col2].Value := Arr[i, j];
      Inc(Col2);
    end;
    Inc(Row2);
  end;
 
  //Координаты правого нижнего угла таблицы.
  Dec(Row2);
  Dec(Col2);
 
  //Выравниваем ширину столбцов таблицы по ширине содержащихся в них данных.
  for j := 0 to N - 1 do begin
    exSheet.Columns[Col1 + j].AutoFit;
  end;
 
  //Получаем ссылку на диапазон, содержащий таблицу на листе Excel.
  exRange := exSheet.Range[
    exSheet.Cells[Row1, Col1],
    exSheet.Cells[Row2, Col2]
  ];
 
  //Обрамление таблицы.
  //Внутренние линии делаем сплошными и тонкими.
  exRange.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
  exRange.Borders[xlInsideHorizontal].Weight := xlThin;
  exRange.Borders[xlInsideVertical].LineStyle := xlContinuous;
  exRange.Borders[xlInsideVertical].Weight := xlThin;
  //Обрамление диапазона выполняем сплошными толстыми линиями.
  exRange.Borders[xlEdgeTop].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeTop].Weight := xlThick;
  exRange.Borders[xlEdgeBottom].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeBottom].Weight := xlThick;
  exRange.Borders[xlEdgeLeft].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeLeft].Weight := xlThick;
  exRange.Borders[xlEdgeRight].LineStyle := xlContinuous;
  exRange.Borders[xlEdgeRight].Weight := xlThick;
 
  //Включаем режим обновления окна Excel.
  //exApp.ScreenUpdating := True;
 
  //Отключаемся от объектов OLE-автоматизации.
  //В этом примере это делать не обязательно, т. к. соответствующие
  //переменные являются локальными и связанные с ними объекты будут
  //освобождены автоматически при выходе из процедуры.
  //Но если переменные являются глобальными и нам они в дальнейшем
  //не понадобятся, то следует их освободить.
  //Код обнуления, в случае глобальных переменных, следует добавить,
  //например, в обработчик события OnDestroy формы. Или в раздел
  //finalization модуля.
  //Если объекты OLE-автоматизации не освободить, то процесс Excel и связанные
  //объекты Excel так и останутся в памяти.
  exRange := Unassigned;
  exSheet := Unassigned;
  exBook := Unassigned;
  exApp := Unassigned;
end;

В программах, если специально в постановке задания не указано, что требуется обрабатывать активный лист, всегда надо избегать обращения к таким объектам, как: ActiveWorkbook, ActiveWorksheet, Selected. Потому что обращения к таким объектам будет приводить к ошибкам, в случае, если окно Excel, например, невидимо.



4



 
grol ©
 
(2005-05-26 02:13)
[0]

Здравствуйте мастера Delphi!!! Помогите пожалуйста!!! Вот код сохранения информации из ADOQuery в Excel:

procedure TForm1.Button1Click(Sender: TObject);
var
 Excel, Workbook, Worksheet: OleVariant;
 CurrentRowIndex, CurrentColIndex: integer;
begin
 CurrentRowIndex := 1;
 Excel := CreateOleObject(«Excel.Application»);
 try
   Workbook := Excel.Workbooks.Add;
   Worksheet := Workbook.Worksheets.Add;
   with ADOQuery do
   try
     Open;
     while not Eof do
     begin
       for CurrentColIndex := 0 to FieldsCount — 1 do
         Worksheet.Cells(CurrentRowIndex, CurrentColIndex + 1) := Fields[CurrentColIndex].AsString;
       Next;
       Inc(CurrentRowIndex);
     end;
   finally
     begin      
    //здесь нужно написать код выделение ячейки и задания ей границ!!!
    ……..
    //например:
     Worksheet.Range[«a1″,»a1»].Font.Color := clBlue;
    //поменять цвет шрифта в ячейке, а мне нужно границы поставить на ячейку
     end;
   end;
 finally
   Excel.Visible := True;
   Excel := Unassigned;
 end;
end;

Это макрос в Excel: выделение ячейки и задания ей границ!!!

Sub Макрос1()
» Макрос1 Макрос
» Макрос записан 26.05.2005 (admin)
   Range(«D8»).Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   Selection.Borders(xlDiagonalUp).LineStyle = xlNone
   With Selection.Borders(xlEdgeLeft)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
   With Selection.Borders(xlEdgeTop)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
   With Selection.Borders(xlEdgeBottom)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
   With Selection.Borders(xlEdgeRight)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
End Sub

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

заранее!!!


 
yk ©
 
(2005-05-26 07:36)
[1]

Во-первых, рекомендую сохранять выделение в переменную типа Variant:

var
Range, Cell1, Cell2: Variant;
……

begin

….
Cell1 := WorkBook.ActiveSheet.Cells[beginRow-3,BeginCol-1];
Cell2 := WorkBook.ActiveSheet.Cells[beginRow-1,BeginCol];
Range := WorkBook.ActiveSheet.Range[Cell1, Cell2];
 Range.Select;

….

end;

Во-вторых ,
рекомендую найти статью «По волнам интеграции и почитать её»

В-третьих,
рамку клетки (или диапазона) делаешь так:
….
Range.Select;
 Range.Borders.LineStyle:=xlContinuous;
 Range.Borders.Weight := xlThick; //или xlMedium

В-четвёртых, больше эксперементируй с макросами в Excel — там куча инфы.

В-пятых, код был приведён для выделения всех сторон клеток.
Может кто-нибудь знает, как выделить, например только боковые границы? А то у меня не получилось :(


 
YurikGL ©
 
(2005-05-26 07:38)
[2]


>    Range(«D8»).Select
>    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
>    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
>    With Selection.Borders(xlEdgeLeft)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
>    With Selection.Borders(xlEdgeTop)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
>    With Selection.Borders(xlEdgeBottom)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
>    With Selection.Borders(xlEdgeRight)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
> End Sub

подозреваю, что будет что-то типа
Excel.activesheet.Range(«D8»).Select
Excel.selection.borders.item(xlEdgeRight).linestyle:=xlContinuous
Excel.selection.borders.item(xlEdgeRight).Weight = xlMedium
Excel.selection.borders.item(xlEdgeRight).ColorIndex = xlAutomatic

Дальше по образу и подобию


 
YurikGL ©
 
(2005-05-26 07:40)
[3]


> Может кто-нибудь знает, как выделить, например только боковые
> границы? А то у меня не получилось :(

Катя, а макрос писать не пробовала?
xlEdgeLeft — левая граница выбранной области,
xlEdgeBottom — нижняя граница выбранной области….


 
yk ©
 
(2005-05-26 08:12)
[4]

Ок

Не додумалась до
> item

Но это у мнея пока умозрительный интерес

А ты где? У меня назрело несколько вопросов и уточнений по базе.
Хоть в Аське появись, плиз


 
Руслан
 
(2005-05-26 11:01)
[5]

Обрисовка только указанных границ:
Sheet.Cells.Item[i+2, 1].Borders.LineStyle:=1;- тип линии
      Sheet.Cells.Item[i+2, 1].Borders.Weight:= 3; — толщина
      Sheet.Cells.Item[i+2, 1].Borders[xlDiagonalDown].LineStyle:=xlNone; — снизу нет
      Sheet.Cells.Item[i+2, 1].Borders[xlDiagonalUp].LineStyle:=xlNone; — по диагонали нет
      Sheet.Cells.Item[i+2, 1].Borders[xlEdgeLeft].LineStyle:=xlNone; — слева нет
      Sheet.Cells.Item[i+2, 1].Borders[xlEdgeRight].LineStyle:=xlNone; — справа нет
      Sheet.Cells.Item[i+2, 1].Borders[xlEdgeTop].LineStyle:=xlNone; — сверху нет
где i+2 — номер ячейки, если есть то этой строки не надо

Обрисовка диапазона ячеек:
// обрисовка диапазона ячеек
  Excel.WorkBooks[1].WorkSheets[1].Range[«A3:» + chr(ord(«C»)+n) + IntToStr(i)].Borders.LineStyle := 1;
  Excel.WorkBooks[1].WorkSheets[1].Range[«A3:» + chr(ord(«C»)+n) + IntToStr(i)].Borders.Weight := 2;
  Excel.WorkBooks[1].WorkSheets[1].Range[«A3:» + chr(ord(«C»)+n) + IntToStr(i)].Borders.ColorIndex := 1;


Для работы с Excel в Delphi, первым делом нужно в Uses указать модуль ComObj.

procedure TForm1.Button1Click(Sender: TObject);

var

XL: Variant;

begin

XL := CreateOLEObject(‘Excel.Application’); // Создание OLE объекта

XL.WorkBooks.add; // Создание новой рабочей книги

XL.visible := true;

end;

Как обратиться к отдельным ячейкам листа Excel в Delphi

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Value:=’30’;

//Результатом является присвоение ячейке [1,1] первого листа значения 30. Также к ячейке

//текущего листа можно обратиться следующим образом:

XL.Cells[1, 1]:=’30’;

Как добавить формулу в ячейку листа Excel в Delphi

XL.WorkBooks[1].WorkSheets[1].Cells[3,3].Value := ‘=SUM(B1:B2)’;

Форматирование текста в ячейках Excel, производится с помощью свойств Font и Interior объекта Cell:

// Цвет заливки

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Interior.Color := clYellow;

// Цвет шрифта

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Color := clRed;

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Name := ‘Courier’;

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Size := 16;

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Bold := True;

Работа с прямоугольными областями ячеек, с помощью объекта Range:

XL.WorkBooks[1].WorkSheets[1].Range[‘A1:C5’].Value := ‘Blue text’;

XL.WorkBooks[1].WorkSheets[1].Range[‘A1:C5’].Font.Color := clBlue;

//В результате в области A1:C5 все ячейки заполняются текстом ‘Blue text’.

Как выделить группу (область) ячеек Excel в Delphi

XL.Range[‘A1:C10’].Select;

Как установить объединение ячеек, перенос по словам, и горизонтальное или вертикальное выравнивание Excel в Delphi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//Выделяем группу (область) ячеек

XL.Range[‘A1:C10’].Select;

// объединение ячеек

XL.Selection.MergeCells:=True;

// перенос по словам

XL.Selection.WrapText:=True;

// горизонтальное выравнивание

XL.Selection.HorizontalAlignment:=3;

//вериткальное выравнивание

XL.Selection.VerticalAlignment:=1;

//Возможны следующие значения:

//1 — выравнивание по умолчанию,

//2 — выравнивание слева,

//3 — выравнивание по центру,

//4 — выравнивание справа.

Как задать границы ячеек Excel в Delphi

XL.Selection.Borders.LineStyle:=1;

// значение может быть установлено от 1 до 10

Как выровнять столбцы Excel по ширине, в зависимости от содержания

XL.selection.Columns.AutoFit;

Как удалить столбец Excel в Delphi

Как задать формат ячеек Excel в Delphi

XL.columns[1].NumberFormat := ‘@’; // текстовый формат

XL.columns[1].NumberFormat := ‘m/d/yyyy’; //  формат дата

XL.columns[1].NumberFormat = ‘0.00%’ // формат процентный

XL.columns[1].NumberFormat = ‘h:mm;@’// формат время


Содержание

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

Excel в Delphi. Как изменить внешний вид ячеек?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 Наклонная пунктирная

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Delphi excel рамки ячеек

Здравствуйте мастера Delphi. Помогите пожалуйста. Вот код сохранения информации из ADOQuery в Excel:

procedure TForm1.Button1Click(Sender: TObject);
var
Excel, Workbook, Worksheet: OleVariant;
CurrentRowIndex, CurrentColIndex: integer;
begin
CurrentRowIndex := 1;
Excel := CreateOleObject(«Excel.Application»);
try
Workbook := Excel.Workbooks.Add;
Worksheet := Workbook.Worksheets.Add;
with ADOQuery do
try
Open;
while not Eof do
begin
for CurrentColIndex := 0 to FieldsCount — 1 do
Worksheet.Cells(CurrentRowIndex, CurrentColIndex + 1) := Fields[CurrentColIndex].AsString;
Next;
Inc(CurrentRowIndex);
end;
finally
begin
//здесь нужно написать код выделение ячейки и задания ей границ.
.
//например:
Worksheet.Range[«a1″,»a1»].Font.Color := clBlue;
//поменять цвет шрифта в ячейке, а мне нужно границы поставить на ячейку
end;
end;
finally
Excel.Visible := True;
Excel := Unassigned;
end;
end;

Это макрос в Excel: выделение ячейки и задания ей границ.

Sub Макрос1()
» Макрос1 Макрос
» Макрос записан 26.05.2005 (admin)
Range(«D8»).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End Sub

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


yk © ( 2005-05-26 07:36 ) [1]

Во-первых, рекомендую сохранять выделение в переменную типа Variant:

var
Range, Cell1, Cell2: Variant;
.

.
Cell1 := WorkBook.ActiveSheet.Cells[beginRow-3,BeginCol-1];
Cell2 := WorkBook.ActiveSheet.Cells[beginRow-1,BeginCol];
Range := WorkBook.ActiveSheet.Range[Cell1, Cell2];
Range.Select;

Во-вторых ,
рекомендую найти статью «По волнам интеграции и почитать её»

В-третьих,
рамку клетки (или диапазона) делаешь так:
.
Range.Select;
Range.Borders.LineStyle:=xlContinuous;
Range.Borders.Weight := xlThick; //или xlMedium
.
В-четвёртых, больше эксперементируй с макросами в Excel — там куча инфы.

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


YurikGL © ( 2005-05-26 07:38 ) [2]


> Range(«D8»).Select
> Selection.Borders(xlDiagonalDown).LineStyle = xlNone
> Selection.Borders(xlDiagonalUp).LineStyle = xlNone
> With Selection.Borders(xlEdgeLeft)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> With Selection.Borders(xlEdgeTop)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> With Selection.Borders(xlEdgeBottom)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> With Selection.Borders(xlEdgeRight)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> End Sub

подозреваю, что будет что-то типа
Excel.activesheet.Range(«D8»).Select
Excel.selection.borders.item(xlEdgeRight).linestyle:=xlContinuous
Excel.selection.borders.item(xlEdgeRight).Weight = xlMedium
Excel.selection.borders.item(xlEdgeRight).ColorIndex = xlAutomatic

Дальше по образу и подобию


YurikGL © ( 2005-05-26 07:40 ) [3]


> Может кто-нибудь знает, как выделить, например только боковые
> границы? А то у меня не получилось 🙁

Катя, а макрос писать не пробовала?
xlEdgeLeft — левая граница выбранной области,
xlEdgeBottom — нижняя граница выбранной области.


yk © ( 2005-05-26 08:12 ) [4]

Не додумалась до
> item

Но это у мнея пока умозрительный интерес

А ты где? У меня назрело несколько вопросов и уточнений по базе.
Хоть в Аське появись, плиз

Источник

Delphi excel рамки ячеек

Здравствуйте мастера Delphi. Помогите пожалуйста. Вот код сохранения информации из ADOQuery в Excel:

procedure TForm1.Button1Click(Sender: TObject);
var
Excel, Workbook, Worksheet: OleVariant;
CurrentRowIndex, CurrentColIndex: integer;
begin
CurrentRowIndex := 1;
Excel := CreateOleObject(«Excel.Application»);
try
Workbook := Excel.Workbooks.Add;
Worksheet := Workbook.Worksheets.Add;
with ADOQuery do
try
Open;
while not Eof do
begin
for CurrentColIndex := 0 to FieldsCount — 1 do
Worksheet.Cells(CurrentRowIndex, CurrentColIndex + 1) := Fields[CurrentColIndex].AsString;
Next;
Inc(CurrentRowIndex);
end;
finally
begin
//здесь нужно написать код выделение ячейки и задания ей границ.
.
//например:
Worksheet.Range[«a1″,»a1»].Font.Color := clBlue;
//поменять цвет шрифта в ячейке, а мне нужно границы поставить на ячейку
end;
end;
finally
Excel.Visible := True;
Excel := Unassigned;
end;
end;

Это макрос в Excel: выделение ячейки и задания ей границ.

Sub Макрос1()
» Макрос1 Макрос
» Макрос записан 26.05.2005 (admin)
Range(«D8»).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End Sub

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


yk © ( 2005-05-26 07:36 ) [1]

Во-первых, рекомендую сохранять выделение в переменную типа Variant:

var
Range, Cell1, Cell2: Variant;
.

.
Cell1 := WorkBook.ActiveSheet.Cells[beginRow-3,BeginCol-1];
Cell2 := WorkBook.ActiveSheet.Cells[beginRow-1,BeginCol];
Range := WorkBook.ActiveSheet.Range[Cell1, Cell2];
Range.Select;

Во-вторых ,
рекомендую найти статью «По волнам интеграции и почитать её»

В-третьих,
рамку клетки (или диапазона) делаешь так:
.
Range.Select;
Range.Borders.LineStyle:=xlContinuous;
Range.Borders.Weight := xlThick; //или xlMedium
.
В-четвёртых, больше эксперементируй с макросами в Excel — там куча инфы.

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


YurikGL © ( 2005-05-26 07:38 ) [2]


> Range(«D8»).Select
> Selection.Borders(xlDiagonalDown).LineStyle = xlNone
> Selection.Borders(xlDiagonalUp).LineStyle = xlNone
> With Selection.Borders(xlEdgeLeft)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> With Selection.Borders(xlEdgeTop)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> With Selection.Borders(xlEdgeBottom)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> With Selection.Borders(xlEdgeRight)
> .LineStyle = xlContinuous
> .Weight = xlMedium
> .ColorIndex = xlAutomatic
> End With
> End Sub

подозреваю, что будет что-то типа
Excel.activesheet.Range(«D8»).Select
Excel.selection.borders.item(xlEdgeRight).linestyle:=xlContinuous
Excel.selection.borders.item(xlEdgeRight).Weight = xlMedium
Excel.selection.borders.item(xlEdgeRight).ColorIndex = xlAutomatic

Дальше по образу и подобию


YurikGL © ( 2005-05-26 07:40 ) [3]


> Может кто-нибудь знает, как выделить, например только боковые
> границы? А то у меня не получилось 🙁

Катя, а макрос писать не пробовала?
xlEdgeLeft — левая граница выбранной области,
xlEdgeBottom — нижняя граница выбранной области.


yk © ( 2005-05-26 08:12 ) [4]

Не додумалась до
> item

Но это у мнея пока умозрительный интерес

А ты где? У меня назрело несколько вопросов и уточнений по базе.
Хоть в Аське появись, плиз

Источник

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


    Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
    Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    Как границы нарисовать в Excel из Delphi

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    09.06.09, 05:12

      Senior Member

      ****

      Рейтинг (т): 3

      Подскажите пожалуйста, как в Excel нариовать границы по диапазону Range (таблицу)? Как только не пробовал, у меня не получалось. Вот код, который создаёт и открывает Excel. Не могу догадаться как написать ещё одну строчку для задания границ.

      ExpandedWrap disabled

        procedure TForm1.Button5Click(Sender: TObject);

        var EAPP: Variant;

            Sheet: Variant;

        begin

        EAPP:=CreateOleObject(‘Excel.Application’);

        EAPP.Visible:=true;

        EAPP.WorkBooks.Add;

        Sheet:=EAPP.Sheets.Item[1];

        Sheet.Cells(4,5):=’sdfsdf’;

        //Sheet.Range[‘A1:C1’].; <- здесь обрисовать границы

        EAPP.ActiveWorkBook.SaveAs(‘C:et.xls’);

        end;

      Корнякова смотрел, там ничего не нашёл наглядного, хотя есть раздел границы и заливка.


      Light13



      Сообщ.
      #2

      ,
      09.06.09, 06:09

        ExpandedWrap disabled

            // Устанавливаем толщину линии границы ячейки

            Sheet.Range[‘A1:C1’].Border.Weight:=2;

            // Устанавливаем тип линии границы ячейки

            Sheet.Range[‘A1:C1’].Border.LineStyle:=-4119;


        Marriage



        Сообщ.
        #3

        ,
        09.06.09, 06:47

          Советую копать в сторону Макросов


          Domino



          Сообщ.
          #4

          ,
          09.06.09, 10:00

            Цитата Marriage @ 09.06.09, 06:47

            Советую копать в сторону Макросов

            • Начать запись макроса
            • Сделать необходимые действия
            • Остановить запись макроса
            • Открыть код макроса
            • Втыкать

            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

            0 пользователей:

            • Предыдущая тема
            • Delphi: Общие вопросы
            • Следующая тема

            Рейтинг@Mail.ru

            [ Script execution time: 0,0207 ]   [ 16 queries used ]   [ Generated: 13.04.23, 22:37 GMT ]  

            В данном обзоре рассмотрены
            основные конструкции,
            позволяющие получить доступ к
            книге Excel из DELPHI.

            Организация доступа к книге
            EXCEL

            Для
            взаимодействия с MS excel в
            программе необходимо
            использовать модуль ComObj
            uses ComObj;
            и объявить переменную для
            доступа к MS excel следующего
            типа:
            var Excel:
            Variant;

            Инициализация
            переменной Excel в простейшем
            случае можно осуществить так:
               
            Excel := CreateOleObject(‘Excel.Application’);

            Создание
            новой книги:
               
            Excel.Workbooks.Add;

            Открытие
            существующей книги (где
            path
            — путь к фалу с расширением xls.):
               
            Excel.Workbooks.Open[path];

            Открытие
            существующей книги только для
            чтения:
               
            Excel.Workbooks.Open[path, 0,
            True];

            Закрытие
            Excel:
               
            Excel.ActiveWorkbook.Close;
                Excel.Application.Quit;

            Блокировка
            запросов (подтвеждений,
            уведомлений) Excel, например,
            запретить запрос на сохранение
            файла:
               
            Excel.DisplayAlerts:=False;

            Отображаем
            Excel на экране:
               
            Excel.Visible := True;
            или скрываем:
               
            Excel.Visible := False;

            Печать
            содержимого активного листа
            excel:
               
            Excel.ActiveSheet.PrintOut;

            Чтение/запись данных в EXCEL

            Доступ к
            ячейке в текущей книге Excel
            можно осуществить следующим
            образом:
               
            Excel.Range[‘B2′]:=’Привет!’;-
            для записи значения в ячейку или
               
            s:=Excel.Range[‘B2’]; —
            для чтения,
            где B2
            — адрес ячейки.

            Или используя стиль ссылок R1C1:

               
            Excel.Range[excel.Cells[2, 2]]:=’Привет!’;,
            где [2, 2]
            — координата ячейки.

            Вообще, ячейке Excel можно
            присваивать любое значение
            (символьное, целое, дробное,
            дата) при этом Excel установит
            форматирование в ячейке
            применяемое по умолчанию.

            Формат ячеек в EXCEL

            Выделить
            (выбрать) группу ячеек для
            последующей работы можно так:
              
            Excel.Range[Excel.Cells[1, 1],
            Excel.Cells[5, 3]].Select;
            или
              
            Excel.Range[‘A1:C5’].Select;
            при этом будет выделена область
            находящаяся между ячейкой A1 и
            C5.

            После
            выполнения выделения можно
            установить:
            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.

            Использование паролей в
            EXCEL

            Установка
            пароля для активной книги может
            быть произведена следующим
            образом:
            try
               // попытка установить пароль
               Excel.ActiveWorkbook.protect(‘pass’);
            except
               // действия при неудачной попытке установить пароль
            end;
            где pass — устанавливаемый
            пароль на книгу.

            Снятие пароля
            с книги аналогично, использовуем
            команду
            Excel.ActiveWorkbook.Unprotect(‘pass’);
            где pass — пароль, установленный
            для защиты книги.

            Установка и
            снятие пароля для активного
            листа книги Excel производится
            командами
            Excel.ActiveSheet.protect(‘pass’);
            // установка пароля
            Excel.ActiveSheet.Unprotect(‘pass’);
            // снятие пароля
            где pass — пароль, установленный
            для защиты книги.

            Вспомогательные операции в
            EXCEL

            Удаление
            строк со сдвигом вверх:
               
            Excel.Rows[‘5:15’].Select;
                Excel.Selection.Delete;
            при выполнении данных действий
            будут удалены строки с 5 по 15.

            Установка
            закрепления области на активном
            листе Excel
               
             // снимаем закрепление области,
            если оно было задано
               Excel.ActiveWindow.FreezePanes:=False;
                 // выделяем нужную ячейку, в данном случае D3
               Excel.Range[‘D3’].Select;
                 // устанавливаем закрепление области
               Excel.ActiveWindow.FreezePanes:=True;

            Удачной работы!

            Источник:

            В данном обзоре рассмотрены
            основные конструкции,
            позволяющие получить доступ к
            книге Excel из DELPHI.

            Организация доступа к книге
            EXCEL

            Для
            взаимодействия с MS excel в
            программе необходимо
            использовать модуль ComObj
            uses ComObj;
            и объявить переменную для
            доступа к MS excel следующего
            типа:
            var Excel:
            Variant;

            Инициализация
            переменной Excel в простейшем
            случае можно осуществить так:
               
            Excel := CreateOleObject(‘Excel.Application’);

            Создание
            новой книги:
               
            Excel.Workbooks.Add;

            Открытие
            существующей книги (где
            path
            — путь к фалу с расширением xls.):
               
            Excel.Workbooks.Open[path];

            Открытие
            существующей книги только для
            чтения:
               
            Excel.Workbooks.Open[path, 0,
            True];

            Закрытие
            Excel:
               
            Excel.ActiveWorkbook.Close;
                Excel.Application.Quit;

            Блокировка
            запросов (подтвеждений,
            уведомлений) Excel, например,
            запретить запрос на сохранение
            файла:
               
            Excel.DisplayAlerts:=False;

            Отображаем
            Excel на экране:
               
            Excel.Visible := True;
            или скрываем:
               
            Excel.Visible := False;

            Печать
            содержимого активного листа
            excel:
               
            Excel.ActiveSheet.PrintOut;

            Чтение/запись данных в EXCEL

            Доступ к
            ячейке в текущей книге Excel
            можно осуществить следующим
            образом:
               
            Excel.Range[‘B2′]:=’Привет!’;-
            для записи значения в ячейку или
               
            s:=Excel.Range[‘B2’]; —
            для чтения,
            где B2
            — адрес ячейки.

            Или используя стиль ссылок R1C1:

               
            Excel.Range[excel.Cells[2, 2]]:=’Привет!’;,
            где [2, 2]
            — координата ячейки.

            Вообще, ячейке Excel можно
            присваивать любое значение
            (символьное, целое, дробное,
            дата) при этом Excel установит
            форматирование в ячейке
            применяемое по умолчанию.

            Формат ячеек в EXCEL

            Выделить
            (выбрать) группу ячеек для
            последующей работы можно так:
              
            Excel.Range[Excel.Cells[1, 1],
            Excel.Cells[5, 3]].Select;
            или
              
            Excel.Range[‘A1:C5’].Select;
            при этом будет выделена область
            находящаяся между ячейкой A1 и
            C5.

            После
            выполнения выделения можно
            установить:
            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.

            Использование паролей в
            EXCEL

            Установка
            пароля для активной книги может
            быть произведена следующим
            образом:
            try
               // попытка установить пароль
               Excel.ActiveWorkbook.protect(‘pass’);
            except
               // действия при неудачной попытке установить пароль
            end;
            где pass — устанавливаемый
            пароль на книгу.

            Снятие пароля
            с книги аналогично, использовуем
            команду
            Excel.ActiveWorkbook.Unprotect(‘pass’);
            где pass — пароль, установленный
            для защиты книги.

            Установка и
            снятие пароля для активного
            листа книги Excel производится
            командами
            Excel.ActiveSheet.protect(‘pass’);
            // установка пароля
            Excel.ActiveSheet.Unprotect(‘pass’);
            // снятие пароля
            где pass — пароль, установленный
            для защиты книги.

            Вспомогательные операции в
            EXCEL

            Удаление
            строк со сдвигом вверх:
               
            Excel.Rows[‘5:15’].Select;
                Excel.Selection.Delete;
            при выполнении данных действий
            будут удалены строки с 5 по 15.

            Установка
            закрепления области на активном
            листе Excel
               
             // снимаем закрепление области,
            если оно было задано
               Excel.ActiveWindow.FreezePanes:=False;
                 // выделяем нужную ячейку, в данном случае D3
               Excel.Range[‘D3’].Select;
                 // устанавливаем закрепление области
               Excel.ActiveWindow.FreezePanes:=True;

            Удачной работы!


            Форум программистов Vingrad

            Поиск:

            Ответ в темуСоздание новой темы
            Создание опроса
            > Выделить границы ячейки Excel через Delphi!!! 

            :(

               

            Опции темы

            Grol
            Дата 26.5.2005, 01:07 (ссылка)
            | (нет голосов)
            Загрузка ... Загрузка …




            Быстрая цитата

            Цитата

            Бывалый
            *

            Профиль
            Группа: Участник
            Сообщений: 159
            Регистрация: 5.5.2005
            Где: Россия

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

            Здравствуйте мастера Delphi!!! Помогите пожалуйста!!! Вот код сохранения информации из
            ADOQuery в Excel:

            procedure TForm1.Button1Click(Sender: TObject);
            var
            Excel, Workbook, Worksheet: OleVariant;
            CurrentRowIndex, CurrentColIndex: integer;
            begin
            CurrentRowIndex := 1;
            Excel := CreateOleObject(‘Excel.Application’);
            try
            Workbook := Excel.Workbooks.Add;
            Worksheet := Workbook.Worksheets.Add;
            with ADOQuery do
            try
            Open;
            while not Eof do
            begin
            for CurrentColIndex := 0 to FieldsCount — 1 do
            Worksheet.Cells(CurrentRowIndex, CurrentColIndex + 1) := Fields[CurrentColIndex].AsString;
            Next;
            Inc(CurrentRowIndex);
            end;
            finally
            begin
            //здесь нужно написать код выделение ячейки и задания ей границ!!!
            ……..
            //например:
            Worksheet.Range[‘a1′,’a1’].Font.Color := clBlue;
            //поменять цвет шрифта в ячейке, а мне нужно границы поставить на ячейку
            end;
            end;
            finally
            Excel.Visible := True;
            Excel := Unassigned;
            end;
            end;

            Это макрос в Excel: выделение ячейки и задания ей границ!!!

            Sub Макрос1()
            ‘ Макрос1 Макрос
            ‘ Макрос записан 26.05.2005 (admin)
            Range(«D8»).Select
            Selection.Borders(xlDiagonalDown).LineStyle = xlNone
            Selection.Borders(xlDiagonalUp).LineStyle = xlNone
            With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
            End With
            With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
            End With
            With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
            End With
            With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
            End With
            End Sub

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

            заранее!!!

            ———————

            Живи так, как будто тебе предстоит умереть завтра…Учись так, как будто тебе предстоит жить вечно………

            PM MAIL ICQ   Вверх
            Kesh
            Дата 26.5.2005, 10:41 (ссылка)
            | (нет голосов)
            Загрузка ... Загрузка …




            Быстрая цитата

            Цитата

            Эксперт
            ****

            Профиль
            Группа: Эксперт
            Сообщений: 2488
            Регистрация: 31.7.2002
            Где: Германия, Saarbrü cken

            Репутация: 3
            Всего: 54

            Код

            WorkSheet.Range['A10','H20'].Borders.Color := clBlack;

            ———————

            user posted image

            PM MAIL WWW ICQ Skype   Вверх
            Гость_kirilllius
            Дата 31.5.2005, 10:03 (ссылка)
               |    (голосов: 0)
            Загрузка ... Загрузка …




            Быстрая цитата

            Цитата

            Unregistered

            Код

            WorkSheet.Range['A1','E10'].Interior.ColorIndex := 42; //цвет ячейки
            WorkSheet.Range['A1','E10'].Borders.Weight := xlThin;  //создать сетку

              Вверх



















            Ответ в темуСоздание новой темы
            Создание опроса
            Правила форума «Delphi: Базы данных и репортинг»
            Vit
            Петрович

            Запрещено:

            1. Публиковать ссылки на вскрытые компоненты

            2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

            Обязательно указание:

            1. Базы данных (Paradox, Oracle и т.п.)

            2. Способа доступа (ADO, BDE и т.д.)

            • Литературу по Дельфи обсуждаем здесь
            • Действия модераторов можно обсудить здесь
            • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
            • Вопросы по реализации алгоритмов рассматриваются здесь
            • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
            • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

            FAQ раздела лежит здесь!


            Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

             

            0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
            0 Пользователей:
            « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »

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