comment
Excelでは、コメントを挿入してセルにメモを追加することができます。このとき、コメントの内容はコメント用のパーツに保存されます。
![セルにコメントを追加する](../static/img/part_office_spreadsheetml/img-4-6-1.png)
Excelではコメントパーツはワークブックと同じxlフォルダ下に作成されます。コメントのパーツはシート単位に作成され、comment1.xml、comment2.xmlという具合にcommentn.xml(nは整数)というファイル名になります。
このときの番号は、シートの番号と必ずしも一致しません。例えば、シートが3つあって、順にsheet1.xml、sheet2.xml、sheet3.xmlとなっていたとします。sheet2とsheet3でコメントを作成した場合、作成されるコメントパーツのファイル名はcomment1.xmlとcomment2.xmlになります。
![sheet2とsheet3でコメントを作成したときのxlフォルダ](../static/img/part_office_spreadsheetml/img-4-6-2.png)
SpreadsheetMLのコメントパーツは次のような構造になっています。
comments要素をルートとしてauthors要素とcommentList要素があります。authors要素はコメント作者の情報がauthor要素によって列挙されます。
commentList要素の中にcomment要素によってコメントが列挙されます。1つのcomment要素が1つのコメントを表します。
comennt要素はauthorId属性とref属性を持っています。authorId属性には、author要素のインデックスが、ref属性にはセルのリファレンスが指定されています。
comment要素の子要素のtext要素にコメントが格納されますが、text要素の構造は次のようになっています。
t要素の内容がコメントのテキストデータです。text要素の子要素としてt要素が現れる場合と、テキストデータはRunとして(レイアウトプロパティを伴って)r要素が現れる場合があります。
サンプルで示した1件分のコメントパーツは次のようになっています。
<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<authors>
<author xml:space="preserve"> </author>
</authors>
<commentList>
<comment ref="B5" authorId="0">
<text>
<r>
<rPr>
<sz val="9"/>
<color indexed="81"/>
<rFont val="MS Pゴシック"/>
<family val="3"/>
<charset val="128"/>
</rPr>
<t>※コードNOと摘要、単価を、セルB5からセルD54に設定したコードマスターを入力し
てください。
コードNOは重複しないように設定してください。</t>
</r>
</text>
</comment>
</commentList>
</comments>
コメントが挿入されているワークシートのデータを見ると、ワークシートのsheetDataにはコメントに関する情報は何も書かれていません。コメントはワークシートから完全に分離された形になっています。ワークシートとコメントは関連付けファイルによって結び付けられます。
worksheets/_relsフォルダにワークシートごとの関連付けファイルがあります。
![worksheets/_rels](../static/img/part_office_spreadsheetml/img-4-6-3.png)
このサンプルではコメントを挿入したsheet2.xmlの関連付けファイルはsheet2.xml.relsです。このファイルにはコメントのパーツが作成された時点で次の要素が追加されています。
<Relationship Id="rId3"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"
Target="../comments1.xml"/>
ここから、このシートにはコメントが挿入されていて、コメントのパーツが../comments1.xmlであるということになります。