Chart
Excelでデータを基にグラフを作成、挿入するとパーツが作成されます。この場合に作成されるパーツは、drawingsフォルダに作成される描画フレームを定義したパーツと、chartsフォルダに作成されるチャートのデータ定義の2つがあります。
この2種類のパーツはいずれもDrawingMLを使って定義されています。
![](../static/img/part_office_spreadsheetml/img-4-7-1.png)
![追加されたパーツ](../static/img/part_office_spreadsheetml/img-4-7-2.png)
drawingのパーツは、シート単位に作成されます。シート1つにつき1つのdrawingのパーツが作成され、drawing1.xml、drawing2.xmlのように番号が付加されます。ただし、ワークシートのパーツファイルの番号とこの番号が同じとは限りません。シートの関連付けファイルでシートとdrawingのパーツが結び付けられます。
グラフのデータとなるチャートのパーツは、チャートごとに作成されます。したがって、1つのシートに2つのグラフが挿入されている場合は、drawingのパーツが1つ、チャートのパーツが2つ作成されます。
以降、実際にワークシートにグラフを挿入した場合の内容を順に説明します。
ここではワークブックの1ページ目のワークシートにグラフを挿入したと想定します。シートのパーツはsheets/sheet1.xmlと仮定します。
シートにグラフを挿入すると、sheet1.xmlには描画データを示すdrawing要素が追加されます。drawing要素はworksheet要素の子要素で、ワークシートのセルデータの部分にはグラフや描画の情報は追加されません。
<drawing r:id="rId2"/>
drawing要素には関連付けIDがあるのみです。このワークシートの関連付けであるsheets/_rels/sheet1.xml.relsファイルを見ると、関連付けIDで参照される描画フレームのパーツのURIが分かります。
<Relationship Id="rId2"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"
Target="../drawings/drawing1.xml"/>
drawing1.xmlはDrawingMLを使って定義されます。その内容は、挿入されたグラフのための描画フレームの定義とグラフを作成するための元データのセルの情報です。
<xdr:wsDr
xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<xdr:twoCellAnchor>
<xdr:from>
<xdr:col>3</xdr:col>
<xdr:colOff>83820</xdr:colOff>
<xdr:row>2</xdr:row>
<xdr:rowOff>0</xdr:rowOff>
</xdr:from>
<xdr:to>
<xdr:col>7</xdr:col>
<xdr:colOff>868680</xdr:colOff>
<xdr:row>17</xdr:row>
<xdr:rowOff>114300</xdr:rowOff>
</xdr:to>
<xdr:graphicFrame macro="">
<xdr:nvGraphicFramePr>
<xdr:cNvPr id="3" name="グラフ 2"/>
<xdr:cNvGraphicFramePr/>
</xdr:nvGraphicFramePr>
<xdr:xfrm>
<a:off x="0" y="0"/>
<a:ext cx="0" cy="0"/>
</xdr:xfrm>
<a:graphic>
<a:graphicData
uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
<c:chart
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
r:id="rId1"/>
</a:graphicData>
</a:graphic>
</xdr:graphicFrame>
<xdr:clientData/>
</xdr:twoCellAnchor>
</xdr:wsDr>
このようにdrawingパーツの内容は、DrawingMLのspreadsheedDrawingのカテゴリに分類される要素で定義されています。
twoCellAnchor要素は、オブジェクトがどのセルに対して割り当てられたものかをfrom要素とto要素で指定します。graphicFrame要素のなかで画像オブジェクトの定義がされています。
描画されたグラフは、graphicData要素の中にチャートとして参照する関連付けIDが定義されています。
<c:chart
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
r:id="rId1"/>
drawingsフォルダには、drawing1.xmlのための関連付けファイル_rels/drawing1.xml.relsがあります。
<Relationship Id="rId1"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"
Target="../charts/chart1.xml"/>
chart1.xmlには、描画されるチャートの定義データがあります。このパーツもDrawingMLの一部であるchartのカテゴリーに分類される要素で定義されます。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<c:lang val="ja-JP"/>
<c:chart>
<c:title>
<c:layout/>
</c:title>
<c:plotArea>
<c:layout/>
<c:pieChart>
<c:varyColors val="1"/>
<c:ser>
<c:idx val="0"/>
<c:order val="0"/>
<c:tx>
<c:strRef>
<c:f>月間家計簿!$B$6</c:f>
<c:strCache>
<c:ptCount val="1"/>
<c:pt idx="0">
<c:v>見積コスト</c:v>
</c:pt>
</c:strCache>
</c:strRef>
</c:tx>
...