C++を使ったセルのスタイル取得と設定

セルの書式設定

セルの書式設定には2つの方法があります。以下に示します。

GetStyle()を使用する

このコードでは、書式設定時に各セルにStyleオブジェクトを作成します。多くのセルを書式設定する場合、Styleオブジェクトは大きなオブジェクトであるため大量のメモリを消費します。これらのStyleオブジェクトはWorkbook.Saveメソッドが呼び出されるまで解放されません。

C++

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

SetStyle()を使用する

最初のアプローチは簡単でわかりやすいため、第2のアプローチを追加しました。

2番目のアプローチを追加したのは、メモリ使用量を最適化するためです。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);

上級トピック