我正在使用以下代码来区分 2003 年和 2007 年 office 的 excel 文件。
if (Extension == ".xls" || Extension == ".xlsx")
{
}
但现在我还需要识别 2010 excel 文件。请提出一些解决方案。
您可能知道 .xlsx 文件(与所有 Office Open XML 文件一样)实际上是 .zip 文件,其中包含一组描述内容的内部文件。因此,您可以在此处找到保存文件的程序的版本号:
将 .xlsx 扩展名重命名为 .zip(当您以编程方式执行此操作时,您可以跳过该步骤,但这对演示很有帮助)。打开文件中包含的压缩结构。
您会docProps
在其中找到一个目录,其中包含一个名为app.xml
(open it) 的文件。你会发现看起来像这样的东西:
<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。