2012-03-10 10 views
0

"MS-XLSファイル形式にストリーム、サブストリーム、およびレコードが含まれています。どのように私はサブの検出については行くだろうサブストリームを検出します

FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read); 
var xs = new List<int>(); 
for(int i = 0; i < stream.Length;i++) 
{ 
xs.Add(stream.ReadByte()); 
} 

: - Understanding the Excel MS-XLS Binary Format

XLSファイルのストリームを考えると?サブストリームが何らかの順序でストリームに実際に含まれているという点で、この名前は欺かれていますか?

+0

@DanielMošmondor - ここには特定の質問があります。残念ながら、あなたは何が起こっているのか誤解していると思います。私は、ファイルストリームを使用してバイト配列を.xlsファイルから.netで作成しています。したがって、私のファイルストリームにはxls構造化ストリームが含まれています。これは、とりわけサブストリームで構成されています。あなたがコメントする前にお読みください。 –

答えて

1

XLS(およびOffice 2007より前の他のMS Office形式)は次のとおりです。複合化されたストレージファイル(別名複合ファイル)(https://en.wikipedia.org/wiki/COM_Structured_Storage参照)。構造化ストレージはファイル内のファイルシステムのようなもので、ファイルは「ストリーム」と呼ばれ、ディレクトリは「ストレージ」と呼ばれます。構造化されたストレージファイルには、ストリームやその他のストレージを含むことができる単一のルート "storage"があり、xlsファイル内のすべてのストリームが存在する場所に表示されます(おそらくドキュメンテーションが "ストレージ"ストリームを「サブストリーム」と呼びます)。

通常、IStorageインターフェイス(http://msdn.microsoft.com/en-us/library/windows/desktop/aa380015%28v=vs.85%29.aspxを参照)を使用して構造化ストレージにアクセスしますが、これは.NETで最も便利な方法ではありません。

.NETの構造化ストレージのデータにアクセスするには、OpenMCDF-http://sourceforge.net/projects/openmcdf/を使用することをお勧めしますが、自分で試したわけではありませんので、その品質に関する約束はできません。

"レコード"は構造化されたストレージファイル形式の一部ではありません。あなたは自分自身をストリームから解析する必要があると思います。

あなたがやろうとしていることに応じて、XLS形式の詳細を心配するのではなく、より高いレベルのインターフェイスを使用することが適切な場合があります。

+0

私はxlsファイルから書式を解析しようとしています。私は細胞のデータを持っていますが、それらのフォーマットを取得する方法を理解することはできません。 –

0

"OLEコンパイルファイル:[MS-CFB]で説明されているような構造化ストレージの形式。単一のファイル内に独立したストレージとストリームを存在させることができます。 -MS

基本的に、このストリームはファイルの格納に使用されている構造を反映しており、MSDNライブラリには少なくとも「サブストリーム」という用語を定義する必要があります。

すべてのファイルは、ストリームから読み取られたバイト配列として表現でき、ストリームの構造化は非常に一般的です。 .NETではファイルストリームを使用してこのデータを収集し、.xls、.jpg、.docなどの任意のファイルで使用できます。

関連する問題