我使用interop在C#中打开Excel文件。我当前遇到的问题是,如果我安装的Excel是英语,为了开始工作,我必须将LocalSettings设置为英语。它会失败这两个不匹配。
我发现这是一个已知问题http://support.microsoft.com/kb/320369。但是,我无法始终将线程cultureinfo设置为英语,因为我无法控制用户安装的Excel版本。看起来唯一的解决方案是找出已安装的Excel的语言设置,并确保两个当前线程cultureinfo是相同的。但是,我无法从安装的Excel中获得正确的语言设置。
感谢您的帮助。
答案 0 :(得分:1)
无法直接回答您的问题,但我最近已转移到NPOI进行所有C#Excel编程。
这是一个非常好的库,并且不需要在服务器上安装Excel,并生成本机,我在不到一天的时间内就开始加速。
它仅适用于Excel 2003文件,文档并不出色。但是,它附带了一整套示例,显示了许多预期的用例。
鉴于您的问题的性质,以及NPOI对Excel安装的零要求,NPOI可能不关心EnglishSettings。
答案 1 :(得分:1)
检查注册表的另一个选择是使用以下方法从excel应用程序中检索语言:
New System.Globalization.CultureInfo(
ExcelApp.LanguageSettings.LanguageID(Office.MsoAppLanguageID.msoLanguageIDUI))
这需要引用Office.dll v14.0
答案 2 :(得分:0)
一个选项可能是检查注册表中已安装语言包的版本。下面的Technet博客有更多信息,请参阅文章末尾有关注册表项的信息。
从以上链接:
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Common\LanguageResources
LanguageResources包括以下注册表项:
Windows操作系统使用LCID识别Windows注册表中的语言。有关语言标识符的列表,请参阅2007 Office system中的语言标识符(http://technet.microsoft.com/en-us/library/cc179219.aspx)。