2010-10-05 3 views
0

Я использую interop для открытия файлов Excel на C#. Текущая проблема заключается в том, что если Excel, который я установил, является английским, для открытия работы я должен установить LocalSettings на английский язык. Это не удастся, если они не совпадут.Сопоставление Cultureinfo привело к сбою Excel Automation

Я обнаружил, что это известный вопрос http://support.microsoft.com/kb/320369. Тем не менее, я не всегда мог установить thread cultureinfo на английский язык, потому что у меня нет контроля над версией Excel, которую пользователь устанавливает. Похоже, единственное решение - узнать настройки языков установленного Excel и убедиться, что текущая тема threadinfoinfo одинакова. Однако я не смог получить правильные настройки языков из установленного Excel.

Ваша помощь приветствуется.

+0

Не исправить в коде, что тривиально может быть фиксированным пользователем. Либо покупка правильной версии Excel, либо установка пакета MUI. Это не ваша проблема. –

ответ

0

Одним из вариантов может быть проверка версии установленного языкового пакета в реестре. В блоге Technet ниже есть дополнительная информация, см. Конец статьи для информации о ключах реестра.

http://blogs.technet.com/b/office_resource_kit/archive/2010/04/02/how-to-determine-which-2007office-system-languages-are-installed.aspx

Из приведенной выше ссылке:

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Common\LanguageResources LanguageResources включает в себя следующие ключи реестра:

  • InstallLanguage Представляет основной язык редактирования.
  • InstalledUIs Предоставляет список всех доступных языков интерфейса на машине.
  • UILanguage Представляет язык отображения по умолчанию для пользовательского интерфейса в Office.
  • EnabledLanguages ​​ Указывает идентификатор локали (LCID) для специфических для языка функций, которые включены в Office.

В операционной системе Windows для идентификации языков в реестре Windows используется идентификатор LCID. Список языковых идентификаторов см. В разделе Идентификаторы языков в системе Office 2007 (http://technet.microsoft.com/en-us/library/cc179219.aspx).

1

Невозможно ответить на ваш вопрос напрямую, но недавно я переехал в NPOI для всех своих программ программирования на C# Excel.

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

Он работает только с файлами Excel 2003, и документация не является отличной. Тем не менее, он поставляется с полным набором примеров, которые показывают многие ожидаемые варианты использования.

Учитывая характер вашей проблемы и нулевое требование NPOI для установки Excel, NPOI может не заботиться о настройках EnglishSettings.

+0

+1 Если это вариант для OP, я согласен, что NPOI - это путь. –

1

Другой вариант более проверки реестра является извлечение языка из приложения Excel с помощью следующей:

Новый System.Globalization.CultureInfo (
ExcelApp.LanguageSettings.LanguageID (Office.MsoAppLanguageID.msoLanguageIDUI))

Это требует ссылки на office.dll v14.0