第4章 SpreadsheetML

Shared String Table

ワークシートの項で説明したように、ワークシート内の文字データ(テキスト)はワークシートのパーツには格納されません。テキストデータは、Shared String Tableと呼ばれる文字列データ用のパーツに格納されます。Shared String Tableのファイルは、ワークブックと同じ階層のxlフォルダにsharedStrings.xmlというファイル名で存在します。

先ほどのサンプルを例に見てみましょう。

B列には、それぞれ“あ”、“い”、“う”、“え”、“お”のテキストが挿入されています。このときのワークシートのB列のc要素だけを抜き出してみます。

B列のデータ
<c r="B1" t="s">
  <v>0</v>
</c>
<c r="B2" t="s">
  <v>1</v>
</c>
<c r="B3" t="s">
  <v>2</v>
</c>
<c r="B4" t="s">
  <v>3</v>
</c>
<c r="B5" t="s">
  <v>4</v>
</c>

このように、c要素には、t="s"の属性値によってテキストデータであることが表され、v要素には数値が入っています。t属性値が"s"のとき、v要素の値はShared String Tableのインデックスを表します。

Shared String Table(sharedStrings.xml)には、sst要素をルートとしてShared Itemのsi要素が列挙されています。

sharedStrings.xml
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="6"
                                                                         uniqueCount="6">
  <si>
    <t>あ</t>
    <phoneticPr fontId="1"/>
  </si>
  <si>
    <t>い</t>
    <phoneticPr fontId="1"/>
  </si>
  <si>
    <t>う</t>
    <phoneticPr fontId="1"/>
  </si>
  <si>
    <t>え</t>
    <phoneticPr fontId="1"/>
  </si>
  <si>
    <t>お</t>
    <phoneticPr fontId="1"/>
  </si>
  <si>
    <t>Sheet1!A1のセル</t>
  </si>
</sst>

si要素の子要素tの内容がセルのテキストデータです。phoneticPr要素はテキストの発音情報を記述するための要素です。ISO 29500-1:2016に  Phonetic text is used to give hints as to the pronunciation of an East Asian language とあるように、ふりがなのような役割を果たします。