.XLSB ファイルとは?
XLSB ファイル形式は、Excel ブックのコンテンツを指定するレコードと構造のコレクションである Excel バイナリ ファイル形式を指定します。コンテンツには、数値、テキスト、または数値とテキストの両方の非構造化または半構造化テーブル、数式、外部データ接続、グラフ、および画像を含めることができます。 XLSX (Open XML ファイル形式に基づく) とは異なり、XLSB はバイナリ Excel ワークブック ファイルを表します。 XLSB ファイルはより高速に読み書きできるため、大きなファイルを扱う場合に便利です。 XLSX (および以前は XLS) は、ワークブックを保存するためにユーザーが選択した最も一般的なファイル形式であるため、XLSB がワークブックの保存に使用されることはほとんどありません。 Microsoft Office 2007 以降で開くことができます。
XLSB ファイル形式の仕様
XLSB ファイル形式のファイル形式仕様は、2008 年にバージョン 1.0 として公開されました。その後、仕様は何度か改訂され、最新バージョンの仕様 (v 10.0) が 2018 年 4 月に公開されました。仕様は、[[MS-XLSB] - Excel Binary File Format 仕様](https:/ /msdn.microsoft.com/en-us/library/cc313133(v#office.12).aspx) を参照してください。XLSB ファイル形式のファイルの読み取りまたは書き込みについては、誰でも参照する必要があります。
XLSB ファイル構造
XLSB ファイルは、パーツのコレクションで構成されるパッケージです。これらのパーツには、ワークブックのデータやパッケージの構造など、ワークブックの内容に関する情報が含まれています。バイナリ レコードを使用して格納された情報を含む部分もあれば、XML として格納された情報を含む部分もあれば、バイトのバイナリ ストリームとして格納された情報を含む部分もあります。各バイナリ レコードには、ワークブック データを含む 0 個以上の構造化フィールドが含まれます。
#### パッケージ ####
XLSB パッケージは ZIP アーカイブであり、ワークブック パーツを 1 つだけ含める必要があります。このパーツは、このパッケージ リレーションシップ パーツのリレーションシップのターゲットである必要があります。ワークブック パーツは、XLSB ドキュメントの開始部分です。
#### 部 ####
パーツは、パーツに格納されているコンテンツの性質とタイプを指定するコンテンツ タイプが関連付けられているバイト ストリームです。情報をバイナリ形式で保存する部分もあれば、XML として情報を保存する部分もあります。仕様ドキュメントの パーツ列挙 セクションには、有効なパーツ、コンテンツ タイプ、および必須/オプションの関係が一覧表示されています。パッケージ内のすべての部品。
#### 関係 ####
ソース リソースとターゲット リソースは関係によって接続されます。関係は次のようになります。
パッケージの関係: ターゲットは一部であり、ソースはパッケージ全体です
部品間の関係: ターゲットが部品で、ソースがパッケージ内の部品である場合
**明示的な関係:**関係要素の ID 属性値を参照することにより、ソース パーツのコンテンツからリソースが参照される場合
暗黙の関係 は、明示的でない関係です
内部関係: ターゲットがパッケージ内の一部である場合
外部関係: ターゲットがパッケージに含まれていない外部リソースである場合
#### 記録 ####
レコードは、ブック内のフィーチャに関する情報を格納するために使用される基本的な構成要素です。各バイナリ レコードは、可変長の一連のバイトです。バイナリ レコードは、次の 3 つのコンポーネントで構成されます。
- レコードタイプ
- レコードサイズ、および
- そのレコード タイプに固有のレコード データ。
レコード タイプ: レコード タイプは、レコードによって指定されたレコードのタイプを示します。また、このレコードに固有のレコード データの構造も指定します。有効なレコードの種類は、仕様ドキュメントの レコードの列挙 セクションに一覧表示されています。レコード タイプは 1 バイトまたは 2 バイトで、128 以上 16384 未満でなければなりません。
レコード サイズ: レコード サイズは、レコード データの合計サイズを指定するバイト数を指定します。この値は 1 ~ 4 バイトでなければなりません。下位バイトの上位ビットが 0 の場合、この値は 1 バイトでなければなりません。それ以外の場合、この値は 1 バイトより大きくなければなりません。バイト数が 1 バイトより大きい場合、連続する各バイトの上位ビットは、追加のバイトを使用するかどうかを指定します。 2 番目のバイトの上位ビットが 1 に等しい場合、この値は追加の 3 番目のバイトを使用する必要があります。 3 番目のバイトの上位ビットが 1 に等しい場合、この値は追加の 4 番目のバイトを使用する必要があります。 4 番目のバイトの上位ビットは無視する必要があります。値は、結合された各バイトの下位 7 ビットで構成されます。下位の最下位ビットは最初のバイトに含まれ、連続する各バイトには前のバイトより上位のビットが含まれます。
レコード データ: レコード データ コンポーネントには、特定のレコード タイプに対応し、残りのレコードを構成するフィールドが含まれます。 Record Enumeration にリストされている特定のレコード タイプのフィールドの順序と構造は、Records のそのレコード タイプに対応するセクションで指定されています。レコード データ コンポーネントの合計サイズは、レコード サイズと等しくなければなりません。レコード データ コンポーネントのフィールドには、単純な値、値の配列、複数のフィールドの構造体、フィールドの配列、および構造体の配列を含めることができます。
XLSB レコードの例
次のレコード タイプとレコード サイズは、サイズが 200 バイトの BrtCommentText レコードを指定します。
11111101 00000100 11001000 00000001 [レコードフィールド]
最初のバイトは 11111101 で、低い値の 125 を指定し、レコード タイプには 2 番目のバイトが必要であることを示しています。 2 番目のバイトは 00000100 で、512 に等しい 4 * 128 の高い値を指定します。レコード タイプの値は 125 + 512、つまり 637 で、BrtCommentText レコード タイプに対応します。次のバイトは 11001000 で、72 という低い値を指定し、レコード サイズには 2 番目のバイトが必要であることを示しています。 2 番目のバイトは 00000001 で、より高い値の 1 * 128 を指定し、レコード サイズに追加のバイトは必要ありません。レコード サイズは 72 + 128、つまり 200 で、レコード データ コンポーネントの合計サイズをバイト単位で指定します。レコード データ コンポーネントのフィールドは、BrtCommentText によって指定されます。