Получение и установка стилей ячеек с помощью C++

Форматирование ячеек

Есть два способа форматирования ячейки, проиллюстрированных ниже.

Использование GetStyle()

В следующем коде создается объект Style для каждой ячейки при форматировании. Если форматируется много ячеек, будет использовано большое количество памяти, потому что объект Style является крупным. Эти объекты Style не освобождаются до вызова метода Workbook.Save.

C++

cell.GetStyle()->GetFont()->SetIsBold(true);

Использование SetStyle()

Первый подход прост и понятен, почему же мы добавили второй?

Мы добавили второй подход для оптимизации использования памяти. После получения объекта Style через метод Cell.GetStyle, его изменяют и применяют обратно методом Cell.SetStyle. Этот объект Style не сохраняется, и среда выполнения C++ освобождает его при отсутствии ссылок.

При вызове метода Cell.SetStyle объект Style не сохраняется для каждой ячейки. Вместо этого осуществляется сравнение этого объекта с внутренним пулом Style, чтобы проверить возможность его повторного использования. Только объекты Style, которые отличаются от существующих, сохраняются для каждого объекта Workbook. Это означает, что для каждого файла Excel создается всего несколько сотен объектов Style, а не тысячи. Для каждой ячейки сохраняется только индекс в пуле объектов Style.

C++

auto style = cell.GetStyle();
style->GetFont()->SetIsBold(true);
cell.SetStyle(style);

Расширенные темы