VSTO加载项中的Excel文档版本

时间:2010-02-25 18:07:33

标签: excel vsto versioning

我经常使用基于VSTO Excel模板的解决方案。我喜欢这个项目类型的一个方面是我可以在Excel模板或工作表中使用缓存数据集来处理在用户保存文件后仍然存在的应用程序状态。但是,缓存的数据集会产生问题:文档的架构绑定到应用程序版本。

这不是一个大问题,但我已经意识到创建一个机制可以在打开时读取Excel文档的版本以检测和处理版本不兼容性。例如,如果我的2.1插件打开1.5文档,则缓存数据的架构将与预期的不匹配。

是否有标准或推荐的方法来标记Excel模板或工作表?如果没有,有没有人建议如何做到这一点?

3 个答案:

答案 0 :(得分:3)

我通常使用Worksheet.CustomProperties将这样的信息保存到我的工作表中。您放入CustomProperties集合的任何信息都会随工作表一起保存,并在您重新加载工作表时与工作表信息一起加载。

工作簿也支持自定义属性,但我认为在您的情况下,Worksheet.CustomProperties是可行的方法。

答案 1 :(得分:0)

我不知道任何标准,但您可以考虑:

  1. 使用Microsoft.Office.Core.DocumentPropertiesHow to: Read from and Write to Document Properties);
  2. 可访问的自定义文档属性
  3. 工作表中的受保护单元格 本身;
  4. 使用第一种方法,用户可以手动更改此属性或将其删除。然而,第二种方法是保护工作表中的单元格,如果我没记错的话,如果你想对该工作表中的任何数据进行排序,会引入一些问题。

答案 2 :(得分:0)

我遇到了类似的问题(如何从VSTO代码中确定Excel版本)。我在寻找解决方案时找到了您的问题。对我有用的是Excel Application对象的Version属性。在工作表中:

Me.Application.Version

或者可能,取决于你在哪里

Globals.ThisWorkbook.Application.Version

无论如何,Excel 2003的值为“11.0”,2007年的值为“12.0”。

但是,在重新阅读问题时,您需要知道创建工作簿的版本。您可以尝试Workbook.CalculationVersion,其中“获取一个数字,指示工作簿上次完全重新计算的Excel版本。最右边的四位数是次要计算引擎版本号,其他数字(左侧)是Microsoft Office Excel的主要版本。“根据{{​​3}}