如何检查excel文件是2007还是2010办公室

时间:2013-01-09 06:53:15

标签: c# asp.net .net excel

我使用以下代码来区分2003和2007办公室的Excel文件。

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

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

1 个答案:

答案 0 :(得分:7)

您可能知道.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将对整个操作进行jinxed)。 Excel 2013预计将是15版。