メインコンテンツへスキップ
  1. 開発室/
  2. OpenXML SDK/

セルの書式設定 - その1

openxmlsdk - この記事は連載の一部です
パート 8: この記事

今回はセルの書式設定について説明します。

まずはExcelファイルでのセルの書式の設定について説明し、そのあとで具体的なコードを紹介します(する予定です)。

Excelファイルでのセルの書式の表現
#

セルの書式設定は、セルをあらわすc要素のs属性によって指定されます。

書式設定の表現

<x:c r="A1">
    <x:v>1</x:v>
</x:c>
<x:c r="B1" s="1">
    <x:v>2</x:v>
</x:c>
<x:c r="C1" s="2">
    <x:v>3</x:v>
</x:c>

s属性に指定されている"1"や"2"などの値はCell Formatsのインデックス番号です。Cell Formatsは/xl/style.xmlに定義されています。

Cell Formats

例えばセル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%“が適用されることになります。

ExcelでセルB1の表示形式を確認

(定義済みの表示形式ではない、) このワークシートにおいてのみ定義されている表示形式は /xl/style.xmlnumFmts 要素に記述されます。

xf要素のnumFmtIdに、上記の表以外の値がセットされている場合、numFmtsを参照する必要があります。

<x:numFmts count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <x:numFmt numFmtId="6" formatCode="&quot;¥&quot;#,##0;[Red]&quot;¥&quot;\-#,##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 - この記事は連載の一部です
パート 8: この記事