使用 C++ 获取和设置单元格样式

格式化单元格

有两种格式化单元格的方式,如下所示。

使用 GetStyle()

使用以下代码,为每个单元格格式化时会初始化一个 Style 对象。如果格式化大量单元格,会占用大量内存,因为 Style 对象是一个大型对象。这些 Style 对象在调用 Workbook.Save 方法前不会被释放。

C++

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

使用 SetStyle()

第一种方法简单直观,为什么我们又添加了第二种方法?

我们添加第二种方法是为了优化内存使用。在使用 Cell.GetStyle 方法检索 Style 对象后,修改它并用 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);

** 高级主题**