c# - 如何查看excel文件是office 2007还是2010的

标签 c# asp.net .net excel

我正在使用以下代码来区分 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。

关于c# - 如何查看excel文件是office 2007还是2010的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14229810/

相关文章:

asp.net - 作为 Web 设计师/Web 开发人员在编写 css 样式时减少浏览器兼容性问题的任何解决方案

c# - 如何在单击按钮时创建新面板?

c# - C# 4 中的可选参数是否向后兼容?

c# - 检索在 C# 中选择值的列的名称

php - php 中是否有 SignalR ASP.NET 的替代方案(特别是 Laravel)

c# - 如何将格式为 "dd/mm"的日期与 DateTime.Now 进行比较

asp.net - 将单选按钮与相应的标签对齐

c# - 将许多变量写入文本文件

c# - 在 C# 中使用 ArrayPool 重用从字符串到字节数组转换的内存?

c# - 具有复杂数组参数的 Web API