今回はセルの書式設定について説明します。
まずはExcelファイルでのセルの書式の設定について説明し、そのあとで具体的なコードを紹介します(する予定です)。
Excelファイルでのセルの書式の表現
セルの書式設定は、セルをあらわすc要素のs属性によって指定されます。
s属性に指定されている"1"や"2"などの値はCell Formatsのインデックス番号です。Cell Formatsは/xl/style.xmlに定義されています。
例えばセルB1について、そのs属性の値が"1"なので、Cell Formatsの中の2番目のxf要素に基づいてセルB1の書式が決まります。
セルB1に適用されるセルの書式指定(xf要素)についてみてみると、numFmtId属性、fontId属性、fillId属性、borderId属性, xfId属性がそれぞれセットされています。
numFmtId属性
numFmtIdの値はセルの「表示形式」についての指定です。定義済みの表示形式のIDがセットされます。
ID | formatCode |
---|---|
0 | General |
1 | 0 |
2 | 0.00 |
3 | #,##0 |
4 | #,##0.00 |
9 | 0% |
10 | 0.00% |
ID | formatCode |
---|---|
11 | 0.00E+00 |
12 | # ?/? |
13 | # ??/?? |
14 | mm-dd-yy |
15 | d-mmm-yy |
16 | d-mmm |
17 | mmm-yy |
ID | formatCode |
---|---|
18 | h:mm AM/PM |
19 | h:mm:ss AM/PM |
20 | h:mm |
21 | h:mm:ss |
22 | m/d/yy h:mm |
37 | #,##0 ;(#,##0) |
38 | #,##0 ;[Red](#,##0) |
ID | formatCode |
---|---|
39 | #,##0.00;(#,##0.00) |
40 | #,##0.00;[Red](#,##0.00) |
45 | mm:ss |
46 | [h]:mm:ss |
47 | mmss.0 |
48 | ##0.0E+0 |
49 | @ |
その他、(長くなるので割愛しますが)ロケール独自の「定義済み表示形式」があります。
2番目のxf要素のnumFmtIdは"9"なので、上記の表と照らし合わせて(セルB1は)書式"0%"が適用されることになります。
(定義済みの表示形式ではない、) このワークシートにおいてのみ定義されている表示形式は/xl/style.xmlのnumFmts要素に記述されます。
xf要素のnumFmtIdに、上記の表以外の値がセットされている場合、numFmtsを参照する必要があります。
<x:numFmts count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:numFmt numFmtId="6" formatCode=""¥"#,##0;[Red]"¥"\-#,##0" />
<x:numFmt numFmtId="176" formatCode="0.E+00" />
</x:numFmts>
例えばセルC1においてs属性の値は"2"となっており、これに相当するxf要素のnumFmtIdは176になっています。numFmts要素に含まれるnumFmt要素の
<x:numFmt numFmtId="176" formatCode="0.E+00" />
によって、セルC1の表示形式は"0.E+00"となります。
次回はfontId属性、fillId属性、borderId属性について取り上げます。
OpenXMLSDKを使ってセルに表示形式をセットする方法については「セルの書式設定 - 表示形式」をご覧ください。