2

我正在使用以下代码来区分 2003 年和 2007 年 office 的 excel 文件。

if (Extension == ".xls" || Extension == ".xlsx")
 {
 }

但现在我还需要识别 2010 excel 文件。请提出一些解决方案。

4

1 回答 1

7

您可能知道 .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。

于 2013-01-09T07:35:53.223 回答