Настройки границ с помощью C++

Добавление границ в ячейки

Microsoft Excel позволяет пользователям форматировать ячейки, добавляя границы. Тип границы зависит от её расположения. Например, верхняя граница добавляется к верхней стороне ячейки. Также можно изменить стиль линии и цвет границы.

С помощью Aspose.Cells разработчики могут добавлять границы и настраивать их внешний вид таким же гибким способом, как в Microsoft Excel.

Добавление границ в ячейки

Aspose.Cells предоставляет класс Workbook, который представляет файл Microsoft Excel. Класс Workbook содержит коллекцию Worksheets, позволяющую получить доступ к каждому листу в файле Excel. Лист представлен классом Worksheet. Класс Worksheet обеспечивает коллекцию Cells. Каждый элемент коллекции Cells представляет объект класса Cell.

Aspose.Cells предоставляет метод GetStyle в классе Cell. Метод SetStyle используется для установки стиля форматирования ячейки. Класс Style предоставляет свойства для добавления границ к ячейкам.

Добавление границ к ячейке

Разработчики могут добавлять границы к ячейке, используя коллекцию GetBorders() объекта Style. Тип границы передается как индекс в коллекцию GetBorders(). Все типы границ предопределены в перечислении BorderType.

Перечисление границ

Типы границ Описание
BottomBorder Линия нижней границы
DiagonalDown Диагональная линия снизу слева вверх направо
DiagonalUp Диагональная линия сверху слева вниз направо
LeftBorder Левая грань
RightBorder Правая грань
TopBorder Верхняя грань

Коллекция GetBorders() хранит все границы. Каждая граница в коллекции GetBorders() представлена объектом Border, который обеспечивает два свойства: GetColor() и GetLineStyle() для установки цвета линии границы и стиля соответственно.

Чтобы установить цвет линии границы, выберите цвет с помощью перечисления Color и присвойте его свойству Color объекта Border.

Стиль линии границы устанавливается выбором стиля линии из перечисления CellBorderType.

Перечисление типов границ ячейки

Типы линий Описание
DashDot Тонкая пунктирно-штриховая линия
DashDotDot Тонкая штрихпунктирная линия
Dashed Пунктирная линия
Dotted Точечная линия
Double Двойная линия
Hair Тонкая линия
MediumDashDot Средняя штрихпунктирная линия
MediumDashDotDot Средняя штрихпунктирная точка
MediumDashed Средняя пунктирная линия
None Нет линии
Medium Средняя линия
SlantedDashDot Наклонная средняя штрихпунктирная линия
Thick Толстая линия
Thin Тонкая линия

Выберите один из стилей линий и затем присвойте его свойству GetLineStyle() объекта Border.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    Workbook workbook;
    Worksheet worksheet = workbook.GetWorksheets().Get(0);
    Cell cell = worksheet.GetCells().Get(u"A1");
    cell.PutValue(u"Visit Aspose!");

    Style style = cell.GetStyle();

    style.GetBorders().Get(BorderType::TopBorder).SetLineStyle(CellBorderType::Thick);
    style.GetBorders().Get(BorderType::TopBorder).SetColor(Color::Black());

    style.GetBorders().Get(BorderType::BottomBorder).SetLineStyle(CellBorderType::Thick);
    style.GetBorders().Get(BorderType::BottomBorder).SetColor(Color::Black());

    style.GetBorders().Get(BorderType::LeftBorder).SetLineStyle(CellBorderType::Thick);
    style.GetBorders().Get(BorderType::LeftBorder).SetColor(Color::Black());

    style.GetBorders().Get(BorderType::RightBorder).SetLineStyle(CellBorderType::Thick);
    style.GetBorders().Get(BorderType::RightBorder).SetColor(Color::Black());

    cell.SetStyle(style);

    workbook.Save(outDir + u"book1.out.xls");
    std::cout << "Excel file saved successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Добавление границ для диапазона ячеек

Также возможно добавлять границы к диапазону ячеек, а не только к одной ячейке. Для этого сначала создайте диапазон ячеек, вызвав метод CreateRange коллекции Cells. Он принимает следующие параметры:

  • Первая строка, первая строка диапазона.
  • Первый столбец, представляет первый столбец диапазона.
  • Количество строк, количество строк в диапазоне.
  • Количество столбцов, количество столбцов в диапазоне.

Метод CreateRange возвращает объект Range, который содержит указанный диапазон ячеек. Объект Range предоставляет метод SetOutlineBorder, который принимает следующие параметры для добавления границы к диапазону ячеек:

  • Тип границы, тип границы, выбранный из перечисления BorderType.
  • Стиль линии, стиль линии границы, выбранный из перечисления CellBorderType.
  • Цвет, цвет линии, выбранный из перечисления Color.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Create workbook
    Workbook workbook;

    // Obtain the reference of the first (default) worksheet
    Worksheet worksheet = workbook.GetWorksheets().Get(0);

    // Accessing the "A1" cell from the worksheet
    Cell cell = worksheet.GetCells().Get(u"A1");

    // Adding some value to the "A1" cell
    cell.PutValue(u"Hello World From Aspose");

    // Creating a range of cells starting from "A1" cell to 3rd column in a row
    Range range = worksheet.GetCells().CreateRange(0, 0, 1, 3);

    // Adding a thick top border with blue line
    range.SetOutlineBorder(BorderType::TopBorder, CellBorderType::Thick, Color::Blue());

    // Adding a thick bottom border with blue line
    range.SetOutlineBorder(BorderType::BottomBorder, CellBorderType::Thick, Color::Blue());

    // Adding a thick left border with blue line
    range.SetOutlineBorder(BorderType::LeftBorder, CellBorderType::Thick, Color::Blue());

    // Adding a thick right border with blue line
    range.SetOutlineBorder(BorderType::RightBorder, CellBorderType::Thick, Color::Blue());

    // Saving the Excel file
    workbook.Save(outDir + u"book1.out.xls");

    std::cout << "Excel file created successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}