Excel у Delphi
Отже, сьогодні розберемося як зробити наш листExcel красивішим, а саме розберемося з такими питаннями:
1. Як дістатися до конкретного кордону осередку?

- верхню
- нижню
- ліву
- праву
- діагональну з верхнього лівого кута в нижній правий
- діагональну з верхнього правого кута в нижній лівий
Якщо Ви вибираєте діапазон осередків, додатково додаються ще два види кордонів:
- внутрішні горизонтальні
- внутрішні вертикальні.
Крім цього, Ви можете визначити свій стиль ліній для промальовування та колір ліній. У самому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.