【问题标题】:Specify region & culture for Microsoft Office interop为 Microsoft Office 互操作指定区域和文化
【发布时间】:2012-09-28 03:26:42
【问题描述】:

我想通过 .net 互操作访问 Excel。我需要使用不同的区域,但不想更改整个操作系统的区域。有没有办法以编程方式指定这个? ApplicationClass 的 LanguageSettings 属性是只读的。

【问题讨论】:

    标签: .net excel internationalization interop ms-office


    【解决方案1】:

    你可以设置当前线程的文化:

    System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
    

    此外,当需要指定要使用的美国文化时,Excel 中存在/曾经存在错误 互操作。这取决于 excel 配置(是否应用了更新)

    例如,您的操作系统文化可能是俄语,但如果您将线程的文化明确设置为 en-US,一切都会好起来的。

    【讨论】:

      【解决方案2】:

      如果是关于分隔符,你可以这样做:

          var ci = new CultureInfo(locale);
          var excelApp = new Microsoft.Office.Interop.Exce.Application();
      
          excelApp.UseSystemSeparators = false;
          excelApp.DecimalSeparator = ci.NumberFormat.NumberDecimalSeparator;
          excelApp.ThousandsSeparator = ci.NumberFormat.NumberGroupSeparator;
      

      【讨论】:

        【解决方案3】:

        这可能会对您的应用程序造成危险。 在我的程序中,当操作系统语言版本与 Office 语言版本不同时,程序崩溃了,因为 Office 试图自动运行语言包。奇怪的行为。

        【讨论】:

        • 是的,“旧格式或无效类型库”。我认为语言界面包会起作用,但微软对我想要的语言收费。
        猜你喜欢
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 2011-08-23
        • 2010-11-17
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多