【问题标题】:Cultureinfo mismatch caused Excel Automation to failCultureinfo 不匹配导致 Excel 自动化失败
【发布时间】:2010-10-05 19:24:12
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

  • 不要在代码中修复用户可以轻松修复的内容。我购买正确版本的 Excel 或安装 MUI 包。这不是你的问题。

标签: c# excel automation cultureinfo


【解决方案1】:

无法直接回答您的问题,但我最近已转到 NPOI 进行所有 C# Excel 编程。

这是一个非常好的库,并且不需要在服务器上安装 Excel,并且可以在不到一天的时间内生成原生。

它只适用于 Excel 2003 文件,文档不是很好。但是,它附带了一整套示例,展示了许多预期的用例。

鉴于您的问题的性质,以及 NPOI 对 Excel 安装的零要求,NPOI 可能不关心 EnglishSettings。

【讨论】:

  • +1,如果这是 OP 的一个选项,我同意 NPOI 是要走的路。
【解决方案2】:

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

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

这需要引用 Office.dll v14.0

【讨论】:

    【解决方案3】:

    一个选项可能是检查注册表中已安装语言包的版本。下面的 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 提供计算机上所有可用 UI 语言的列表。
    • UILanguage 表示 Office 中用户界面的默认显示语言。
    • EnabledLanguages 表示在 Office 中启用的特定语言功能的区域设置标识符 (LCID)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-25
      • 2017-12-10
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多