Cultureinfo不匹配导致Excel自动化失败

我使用互操作来打开C#中的Excel文件。 目前我遇到的问题是,如果我安装的Excel是英文的,为了开始工作,我必须设置LocalSettings为英文。 这两个不匹配会失败。

我发现这是一个已知的问题http://support.microsoft.com/kb/320369 。 但是,我不能总是将线程cultureinfo设置为英文,因为我无法控制用户安装的Excel版本。 看起来唯一的解决方法是找出安装的Excel的语言设置,并确保两个当前线程cultureinfo是相同的。 但是,我无法从安装的Excel中获得正确的语言设置。

你的帮助表示赞赏。

不能直接回答你的问题,但我最近搬到了NPOI所有我的C#Excel编程。

这是一个非常好的图书馆,并不需要在服务器上安装Excel,并产生本机我不到一天的速度。

它只适用于Excel 2003文件,并且文档不是很好。 但是,它提供了一整套示例,显示了许多预期的用例。

考虑到您的问题的性质,以及NPOI对Excel安装的零需求,NPOI可能不关心英语设置。

检查registry的另一个选项是使用以下方法从Excel应用程序中检索语言:

新System.Globalization.CultureInfo(
ExcelApp.LanguageSettings.LanguageID(Office.MsoAppLanguageID.msoLanguageIDUI))

这需要参考Office.dll v14.0

一种select可能是检查registry中已安装的语言包的版本。 下面的Technet博客有更多信息,请参阅文章末尾以获取有关registry项的信息。

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包含以下registry项:

  • InstallLanguage表示主要的编辑语言。
  • InstalledUIs提供机器上所有可用UI语言的列表。
  • UILanguage表示Office中用户界面的默认显示语言。
  • EnabledLanguages表示在Office中启用的语言特定的function的区域设置标识符(LCID)。

Windows操作系统使用LCID来识别Windowsregistry中的语言。 有关语言标识符的列表,请参阅2007 Office system中的语言标识符(http://technet.microsoft.com/zh-cn/library/cc179219.aspx)。