セルに書式を設定するにはput_NumberFormat()メソッドを使用します。下記のコードは先ほどの例に書式を設定しています。
for(unsigned int i=0;i<elements[0];i++){
for(unsigned int j=0;j<elements[1];j++){
index[0] = i;
index[1] = j;
sa.PutElement(index,(void*)(&cell_data[i][j]));
}
}
cell.put_Value(COleVariant(sa));
//書式を設定する
cell.put_NumberFormat(COleVariant("#,##0"));
cell.ReleaseDispatch();
その他比較的よく使用する、MergeCell/HorizontalAlignment/Borders/Autofitの例を示します。どれも基本は同じです。適用したいセルオブジェクトにアタッチしメソッドを呼び出します。
COleVariant varTrue((short)TRUE,VT_BOOL);
cell.AttachDispatch(
wsheet.get_Range(COleVariant("C5"),COleVariant("D5"))
);
cell.put_MergeCells(varTrue);
cell.put_Value(COleVariant("総合計"));
-4152はxlHAlignRightです。
cell.put_HorizontalAlignment(COleVariant((short)-4152));
セルのラインを個々に設定する場合、Borders/Borderオブジェクトクラスが必要になります。タイプライブラリからBorders/Borderクラスを生成してください。-4115はxlDash、-4138はxlMediumです。
CBorders borders;
CBorder border;
borders.AttachDispatch(cell.get_Borders());
border.AttachDispatch(borders.get_Item(4));
border.put_LineStyle(COleVariant((short)-4115));
border.put_Weight(COleVariant((short)-4138));
border.ReleaseDispatch();
borders.ReleaseDispatch();
cell.ReleaseDispatch();
cell.AttachDispatch(
wsheet.get_Range(COleVariant("E5"),COleVariant("E5"))
);
cell.put_Formula(COleVariant("=SUM(A3:E3)"));
cell.put_NumberFormat(COleVariant("\\#,##0"));
cell.ReleaseDispatch();
CRange wr1,wr2;
wr1.AttachDispatch(
wsheet.get_Range(COleVariant("A1"),COleVariant("E1"))
);
wr2.AttachDispatch(wr1.get_EntireColumn());
wr2.AutoFit();
wr2.ReleaseDispatch();
wr1.ReleaseDispatch();
ここまでを実行すると次のようにC5D5のセルが結合され、そのセルに下線(点線)が引かれます。またA-E列までが文字幅に応じて伸縮されました。
