Версия документа Excel в надстройке VSTO - PullRequest
4 голосов
/ 25 февраля 2010

Я часто использую решения на основе шаблонов VSTO Excel. В этом типе проекта мне нравится то, что я могу использовать кэшированные наборы данных в шаблоне или на листе Excel для обработки состояния приложения, которое сохраняется после сохранения файла пользователем. Однако кэшированные наборы данных создают проблему: схема документа привязана к версии приложения.

Это не было большой проблемой, но я понял, что было бы неплохо создать механизм, который будет читать версию документа Excel при ее открытии для обнаружения и обработки несовместимости версий. Например, если мой плагин 2.1 открывает документ 1.5, схема кэшированных данных не будет соответствовать ожидаемой.

Существует ли стандартный или рекомендуемый способ печати версии шаблона или листа Excel? Если нет, у кого-нибудь есть предложения, как это сделать?

Ответы [ 3 ]

3 голосов
/ 20 марта 2010

Я обычно использую Worksheet.CustomProperties для сохранения информации, подобной этой, в моем рабочем листе. Любая информация, введенная вами в коллекцию CustomProperties, сохраняется вместе с рабочим листом и загружается обратно вместе с данными рабочего листа при перезагрузке рабочего листа.

Рабочие книги также поддерживают пользовательские свойства, но я думаю, что в вашем случае Worksheet.CustomProperties - это то, что нужно.

0 голосов
/ 12 марта 2010

У меня была похожая проблема (как определить версию Excel из кода VSTO). Я нашел ваш вопрос во время поиска решения. Для меня работало свойство Version объекта приложения Excel. Из рабочего листа:

Me.Application.Version

или, может быть, в зависимости от того, где вы находитесь

Globals.ThisWorkbook.Application.Version

В любом случае значение равно «11.0» для Excel 2003 и «12.0» для 2007.

Однако, перечитывая вашу проблему, вы должны знать версию, которая создала рабочую книгу. Вы можете попробовать Workbook.CalculationVersion, который "Получает число, указывающее версию Excel, на которую последний раз была полностью пересчитана книга. Самые последние четыре цифры - это младший номер версии механизма вычислений, а другие цифры (слева) - основная версия Microsoft Office Excel. " согласно http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.calculationversion.aspx

0 голосов
/ 02 марта 2010

Я не знаю ни одного стандарта, но вы можете рассмотреть:

  1. Использование пользовательского свойства документа, доступного по Microsoft.Office.Core.DocumentProperties ( Как: читать и писать в свойствах документа );
  2. Защищенная ячейка на листе сам по себе;

При первом подходе пользователь может вручную изменить это свойство или удалить его. Однако при втором подходе у вас будут защищенные ячейки на листе, которые, если я правильно помню, создадут некоторые проблемы, если вы захотите отсортировать какие-либо данные на этом листе.

...