以编程方式查找Excel文件的Excel版本

我正在使用OleDbConnection从C#程序连接到电子表格。 连接string中的一个参数是Excel版本。

“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ Book1.xls; Extended Properties =” Excel 8.0 ; HDR = YES“

鉴于Excel文件的path,我怎样才能找出它使用的Excel格式版本?

提前致谢,

T.

下载OLE文件属性阅读器 。 用regsvr32注册dsofile.dll,并将其作为参考添加到您的应用程序中。 以下代码将输出Excel文件的types。 它不会在xlsx / docx上工作,因为它们不是OLE compunds的目标文件,而是应该适用于所有旧的Office格式(2007/2003 / XP)。

var doc = new OleDocumentPropertiesClass(); doc.Open(@"c:\spreadhseet.xls", false, dsoFileOpenOptions.dsoOptionDefault); Console.WriteLine(doc.OleDocumentType); 

除了所说的内容之外,除了使用Excel自动化打开文件之外,您可以尝试从代码中读取文件版本:

xls文件:这些文件被保存为结构化存储 。 您可以使用这篇文章中的技巧: 如何确定哪个版本的Excel写了一个工作簿

xlsx文件:你可以打开它们作为zip文件。 版本位于app.xml文件的AppVersion字段中。