次の方法で共有


SpreadsheetML ドキュメントの構造

適用対象: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010

この記事の内容
スプレッドシートの重要なパーツ
最低限のブックのシナリオ
標準的なブックのシナリオ

SpreadsheetML ドキュメントのドキュメント構造は、<sheets> を含む <workbook> 要素と、ブック内のワークシートを参照する <sheet> 要素で構成されます。ワークシートごとに異なる XML ファイルが作成されます。これらの要素は、有効なスプレッドシート ドキュメントに必要な最低限の要素です。スプレッドシート ドキュメントは、さらに、<table>、<chartsheet>、<pivotTableDefinition>、または他のスプレッドシート関連の要素を含む場合があります。

このセクションの内容

スプレッドシートの重要なパーツ

最低限のブックのシナリオ

標準的なブックのシナリオ

スプレッドシートの重要なパーツ

Open XML SDK 2.0 を使用すると、SpreadsheetML の要素に対応する厳密に型指定されたクラスを使用したドキュメント構造とコンテンツを作成できます。これらのクラスは DocumentFormat.OpenXML.Spreadsheet 名前空間にあります。次の表は、スプレッドシートの重要な要素の一部に対応するクラスのクラス名の一覧です。

パッケージのパーツ

最上位の SpreadsheetML 要素

Open XML SDK 2.0 のクラス

説明

ブック

workbook

Workbook

メイン ドキュメント パーツのルート要素。

ワークシート

worksheet

Worksheet

テキスト、数値、日付、または式を含むセルのグリッドを表すシートの種類。詳細については、「シートを操作する」を参照してください。

グラフ シート

chartsheet

Chartsheet

独自のシートとして格納されるグラフを表すシート。詳細については、「シートを操作する」を参照してください。

テーブル

table

Table

データの範囲が単一のデータセットに属することを指定する論理的な構造。詳細については、「表を操作する (SpreadsheetML)」を参照してください。

ピボットテーブル

pivotTableDefinition

PivotTableDefinition

データの集約されたビューをわかりやすいレイアウトで表示する論理的な構造。詳細については、「ピボットテーブルの操作」を参照してください。

ピボット キャッシュ

pivotCacheDefinition

PivotCacheDefinition

PivotTable のデータのソースを定義する構造。詳細については、「ピボットテーブルの操作」を参照してください。

ピボット キャッシュ レコード

pivotCacheRecords

PivotCacheRecords

PivotTable のソース データのキャッシュ。詳細については、「ピボットテーブルの操作」を参照してください。

計算チェーン

calcChain

CalculationChain

ブック内のセルが最後に計算された順序を指定する構造。詳細については、「計算チェーンを操作する」を参照してください。

共有文字列テーブル

sst

SharedStringTable

ブックの全ワークシートに出現する一意の各文字列が 1 つずつ格納される構造。詳細については、「共有文字列テーブルを操作する」を参照してください。

条件付き書式設定

conditionalFormatting

ConditionalFormatting

1 つのセルまたは一連のセルに適用される書式を定義する構造。詳細については、「条件付き書式を操作する」を参照してください。

f

CellFormula

式を格納するセルの式テキストを定義する構造。詳細については、「式を操作する」を参照してください。

最低限のブックのシナリオ

Standard ECMA-376 (英語) の次のテキストでは、最低限のブックのシナリオは示されています。

可能な限り最も小さい (空白の) ブックには、次のものが含まれる必要があります。

    1 つのシート

    シート ID

    シート定義の位置を示すリレーション ID

© Ecma International: 2006 年 12 月

Open XML SDK コード例

次のコード例では、Open XML SDK 2.0 for Microsoft Office のクラスを使用して、最低限の空白のブックを作成します。

public static void CreateSpreadsheetWorkbook(string filepath)
{
    // Create a spreadsheet document by supplying the filepath.
    // By default, AutoSave = true, Editable = true, and Type = xlsx.
    SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

    // Add a WorkbookPart to the document.
    WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new Workbook();

    // Add a WorksheetPart to the WorkbookPart.
    WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet(new SheetData());

    // Add Sheets to the Workbook.
    Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());

    // Append a new worksheet and associate it with the workbook.
    Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
    sheets.Append(sheet);

    workbookpart.Workbook.Save();

    // Close the document.
    spreadsheetDocument.Close();
}
Public Sub CreateSpreadsheetWorkbook(ByVal filepath As String)
    ' Create a spreadsheet document by supplying the filepath.
    ' By default, AutoSave = true, Editable = true, and Type = xlsx.
    Dim spreadsheetDocument As SpreadsheetDocument = spreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook)

    ' Add a WorkbookPart to the document.
    Dim workbookpart As WorkbookPart = spreadsheetDocument.AddWorkbookPart
    workbookpart.Workbook = New Workbook

    ' Add a WorksheetPart to the WorkbookPart.
    Dim worksheetPart As WorksheetPart = workbookpart.AddNewPart(Of WorksheetPart)()
    worksheetPart.Worksheet = New Worksheet(New SheetData())

    ' Add Sheets to the Workbook.
    Dim sheets As Sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild(Of Sheets)(New Sheets())

    ' Append a new worksheet and associate it with the workbook.
    Dim sheet As Sheet = New Sheet
    sheet.Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart)
    sheet.SheetId = 1
    sheet.Name = "mySheet"

    sheets.Append(sheet)

    workbookpart.Workbook.Save()

    ' Close the document.
    spreadsheetDocument.Close()
End Sub

生成される SpreadsheetML

Open XML SDK 2.0 のコードを実行して最低限のブックを生成した後は, .zip パッケージの内容を調べて、SpreadsheetML XML のコードを確認できます。.zip パッケージを表示するには、最低限のスプレッドシートの拡張子を .xlsx から .zip に変更します。.zip パッケージの中には、最低限のブックを構成する複数のパーツが含まれます。

次の図では、最低限のブックの .zip パッケージの xl フォルダーの下にある構造を示します。

図 1. .zip のフォルダーの構造

最小ワークブックの構造

workbook.xml ファイルには、ブック内のワークシートを参照する <sheet> 要素が含まれます。各ワークシートは、シート ID とリレーションシップ ID によってブックに関連付けられています。sheetID は、パッケージ内でシートを識別するために使用される ID で、ブック内で一意である必要があります。id は、シートと関連付けられているシート パーツ定義を示すリレーションシップ ID です。

次に示す XML コードは、スプレッドシート ドキュメントのブック パーツを表す spreadsheetML です。このコードは、Open XML SDK 2.0 コードを実行して最低限のブックを作成すると生成されます。

<?xml version="1.0" encoding="utf-8"?>
<x:workbook xmlns:x="https://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <x:sheets>
        <x:sheet name="mySheet" sheetId="1" r:id="Rddc7711f116045e5" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" />
    </x:sheets>
</x:workbook>

workbook.xml.rels ファイルには、ブックとそれに含まれるワークシートの間の関係を定義している <Relationship> 要素が含まれます。

次に示す XML コードは、スプレッドシート ドキュメントのリレーションシップ パーツを表す spreadsheetML です。このコードは、Open XML SDK 2.0 を実行して最低限のブックを作成すると生成されます。

<?xml version="1.0" encoding="utf-8"?>
<Relationships xmlns="https://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Type="https://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="/xl/worksheets/sheet.xml" Id="Rddc7711f116045e5" />
</Relationships>

sheet.xml ファイルには、セル テーブルを表す <sheetData> 要素が含まれます。この例ではブックは空白なので、<sheetData> 要素は空です。シートの詳細については、「シートを操作する」を参照してください。

次に示す XML コードは、スプレッドシート ドキュメントのワークシート パーツを表す spreadsheetML です。このコードは、Open XML SDK 2.0 を実行して最低限のブックを作成すると生成されます。

<?xml version="1.0" encoding="utf-8"?>
<x:worksheet xmlns:x="https://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <x:sheetData />
</x:worksheet>

標準的なブックのシナリオ

標準的なブックは、空白の最低限のブックではありません。標準的なブックには、数値、テキスト、グラフ、テーブル、およびピボットテーブルが含まれる場合があります。これらの各追加パーツは、スプレッドシート ドキュメントの .zip パッケージに格納されます。

次の図では、標準的なスプレッドシートに含まれるほとんどの要素が示されています。

図 2. 標準的なスプレッドシートの要素

SpreadsheetML ドキュメントの構造