уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Итак, сегодня разберемся как сделать наш лист Excel более красивым, а именно разберемся со следующими вопросами:
-
- Как добраться до конкретной границы ячейки?
- Как изменить внешний вид границы?
- Как сделать заливку ячеек цветом?
- Как изменить шрифт в ячейках?
1. Как добраться до конкретной границы ячейки?
Перед Вами окно изменения формата ячеек. Вкладка «Границы». Как видите Excel может отрисовывать следующие границы ячеек:
- верхнюю
- нижнюю
- левую
- правую
- диагональную из верхнего левого угла в нижний правый
- диагональную из верхнего правого угла в нижний левый
Если Вы выбираете диапазон ячеек, то дополнительно добавляются ещё два вида границ:
- внутренние горизонтальные
- внутренние вертикальные.
Кроме этого, Вы можете определить свой стиль линий для прорисовки и цвет линий. В самом Excel работа с форматом ячеек достаточно прозрачна и ясна. А вот при работе с Excel в Delphi все обстоит не так уж и радужно
Прежде чем браться за прорисовку границ, следует определиться — какой объект Вы будете для этого использовать. Вы можете прорисовать границу с помощью объектов:
- Cells — ячейка
- Range — диапазон ячеек
- 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 | Наклонная пунктирная |
Стандартные индексы цветов, которые вы можете использовать при прорисовке границы представлены на рисунке:
Для толщины линии определены константы:
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 | ||
|
Из этого кода видно, что линовка выполняется с помощью свойства Borders. При этом вид (стиль) линий задаётся свойством LineStyle, а толщина линий — свойством Weight. Положение линии задаётся параметром, передаваемым свойству Borders.
Теперь разбираемся с константами. Смотрим, например, на строку:
Visual Basic | ||
|
правой кнопкой мыши щёлкаем на слове: xlEdgeLeft и в появившемся контекстном меню выбираем: «Definition». — Откроется окно Браузера Оъектов, в котором мы увидим, что константа xlEdgeLeft относится к группе констант XlBordersIndex. Внизу окна будет показано числовое значение этой константы. Кроме этого в окне будут показаны все константы, относящиеся к группе XlBordersIndex. Выписываем значения нужных нам констант. — Имена констант с числовым значением можно прямо выделять и копировать из строки внизу Браузера Объектов Excel.
Таким же образом выясняем значения констант, связанных со свойствами LineStyle и Weight. В результате в раздел const нашей программы записываем следующее:
Delphi | ||
|
Здесь я расписал для демонстрации все константы в нужных группах. На практике надо выписывать только нужные константы, возможно, с заделом на будущее, если в этом есть смысл.
Теперь, пользуясь созданными константами в программе на Delphi и анализируя код макроса, пишем код разлиновки на Delphi:
Delphi | ||
|
Предположим, для демонстрации, нам надо сформировать двумерный массив, потом распечатать и оформить
его в Excel. Сделать это можно, например так:
Delphi | ||
|
В программах, если специально в постановке задания не указано, что требуется обрабатывать активный лист, всегда надо избегать обращения к таким объектам, как: 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;@’// формат время |
Содержание
- Excel в Delphi. Как изменить внешний вид ячеек?
- 1. Как добраться до конкретной границы ячейки?
- 2. Как изменить внешний вид границы?
- 3. Как сделать заливку ячеек цветом?
- 4. Как изменить шрифт в ячейках?
- Delphi excel рамки ячеек
- 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
Но это у мнея пока умозрительный интерес
А ты где? У меня назрело несколько вопросов и уточнений по базе.
Хоть в Аське появись, плиз
Источник
|
|
|
Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
… (продолжение следует) …
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки бан.
Мат в разделе — бан на три месяца…
Как границы нарисовать в Excel из Delphi
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Senior Member Рейтинг (т): 3 |
Подскажите пожалуйста, как в Excel нариовать границы по диапазону Range (таблицу)? Как только не пробовал, у меня не получалось. Вот код, который создаёт и открывает Excel. Не могу догадаться как написать ещё одну строчку для задания границ.
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 |
|
// Устанавливаем толщину линии границы ячейки Sheet.Range[‘A1:C1’].Border.Weight:=2; // Устанавливаем тип линии границы ячейки Sheet.Range[‘A1:C1’].Border.LineStyle:=-4119; |
Marriage |
|
Советую копать в сторону Макросов |
Domino |
|
Цитата Marriage @ 09.06.09, 06:47 Советую копать в сторону Макросов
|
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ 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 |
|
||
Бывалый Профиль
Репутация: нет
|
Здравствуйте мастера Delphi!!! Помогите пожалуйста!!! Вот код сохранения информации из procedure TForm1.Button1Click(Sender: TObject); Это макрос в Excel: выделение ячейки и задания ей границ!!! Sub Макрос1() Помогите пожалуйста опытные программситы, буду очень вам благодарен!!! Спасибо заранее!!! ——————— Живи так, как будто тебе предстоит умереть завтра…Учись так, как будто тебе предстоит жить вечно……… |
||
|
|||
Kesh |
|
||
Эксперт Профиль
Репутация: 3
|
——————— |
||
|
|||
Гость_kirilllius |
|
||
Unregistered
|
|
||
|
|||
|
Правила форума «Delphi: Базы данных и репортинг» | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |