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项的信息。
从上面的链接:
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)。