我需要区分所选文件是使用所选 Excel 文件的 Excel 2010 或 Excel 2013 版本创建的,并且服务器上的 Excel 应用程序必须匹配才能继续。
我可以获得服务器的Excel应用程序版本:
xApp = new Microsoft.Office.Interop.Excel.Application();
// getting version of Server's Excel Application
string versionName = xApp.Version;
int length = versionName.IndexOf('.');
versionName = versionName.Substring(0, length);
object missing = Type.Missing;
object trueObject = true;
xApp.Visible = false;
xApp.DisplayAlerts = false;
xWorkBook =
xApp.Workbooks.Open(ExcelFilePath, missing, trueObject,
missing, missing, missing,
missing, missing, missing,
missing, missing, missing, missing, missing, missing);
但是如何获取打开的 Excel 文件的 Excel 版本呢?
在目前的情况下,versionName
回报14.0
,适用于 Office 2010。
For .xls
您需要解码“BIFF”值的文件,来自MSDN:如何确定 Microsoft Excel 工作簿的版本:
Microsoft Excel 使用结构化存储来保存数据。特别是,它创建一个名为“Workbook”(以前只是“Book”)的数据流,在其中保存以 BOF(文件开头)记录开始的内容。
那篇文章中还有一些代码,但我不确定在不侵犯版权的情况下我可以从中提取多少代码。
根据该文章底部的表格,该格式一直使用到 Excel 2002。
As for .xlsx
文件,您可以使用任何 zip 文件库打开它,然后打开docProps\app.xml
文件,在里面你会发现这个:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns=...>
....
<AppVersion>15.0300</AppVersion>
</Properties>
这将告诉您保存该特定文件的 Excel 版本。
另请注意,Excel 会根据情况决定是使用新存储加载还是旧存储加载。contents的文件,而不仅仅是扩展名,因此您可以存储具有 .xlsx 扩展名的旧式文件和具有 .xls 扩展名的新式文件,Excel 仍会打开它,您也应该这样做。 Excel 会发出警告,但如何处理差异取决于您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)