2003 年と 2007 年のオフィスの Excel ファイルを区別するために、次のコードを使用しています。
if (Extension == ".xls" || Extension == ".xlsx")
{
}
しかし今、2010年のExcelファイルも特定する必要があります。いくつかの解決策を提案してください。
.xlsx ファイル (すべての Office Open XML ファイルと同様) は、実際にはコンテンツを説明する一連の内部ファイルを含む .zip ファイルであることをご存知でしょう。ファイルを保存したプログラムのバージョン番号は、次の場所で確認できます。
.xlsx 拡張子の名前を .zip に変更します (これをプログラムで行っている場合は、その手順を省略できますが、デモンストレーションには役立ちます)。ファイルに含まれる圧縮構造を開きます。
docProps
という名前のファイルを含むディレクトリが中にあります(app.xml
開く)。次のようなものが見つかります。
<Properties>
<Application>Microsoft Excel</Application>
<DocSecurity>0</DocSecurity>
<ScaleCrop>false</ScaleCrop>
<HeadingPairs>
<vt:vector size="2" baseType="variant">
<vt:variant>
<vt:lpstr>Worksheets</vt:lpstr>
</vt:variant>
<vt:variant>
<vt:i4>3</vt:i4>
</vt:variant>
</vt:vector>
</HeadingPairs>
<TitlesOfParts>
<vt:vector size="3" baseType="lpstr">
<vt:lpstr>Sheet1</vt:lpstr>
<vt:lpstr>Sheet2</vt:lpstr>
<vt:lpstr>Sheet3</vt:lpstr>
</vt:vector>
</TitlesOfParts>
<LinksUpToDate>false</LinksUpToDate>
<SharedDoc>false</SharedDoc>
<HyperlinksChanged>false</HyperlinksChanged>
<AppVersion>14.0300</AppVersion>
</Properties>
<Application>
タグが見えますか?これは、Excel で保存されたことを示しています (Open Office とは対照的に)。<AppVersion>
タグが見えますか?それには、探しているバージョン番号があります。Excel 2007 はバージョン 12 で、Excel 2010 は 14 です (バージョン番号 13 を使用すると操作全体が混乱するため)。Excel 2013 はバージョン 15 になる予定です。