.net 指定区域&;Microsoft Office互操作的区域性

.net 指定区域&;Microsoft Office互操作的区域性,.net,excel,internationalization,interop,ms-office,.net,Excel,Internationalization,Interop,Ms Office,我想通过.net互操作访问Excel。我需要使用不同的区域,但不想更改整个操作系统的区域。有没有办法以编程方式指定此选项?ApplicationClass的LanguageSettings属性是只读的。它可能会对应用程序造成威胁。 在我的程序中,当操作系统语言版本和Office语言版本不同时,程序崩溃,因为Office试图自动运行语言包。奇怪的行为。您可以设置当前线程的区域性: System.Threading.Thread.CurrentThread.CurrentCulture = new

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

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

您可以设置当前线程的区域性:

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
此外,当需要指定要使用的en-US文化时,Excel中存在一个bug 互操作。这取决于excel配置(是否应用了更新)


例如,您的操作系统区域性可能是俄语,但如果您将线程的区域性显式设置为en,则所有人都可以。

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

    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;
是的,“旧格式或无效类型库”。我认为语言界面包可以工作,但微软对我想要的语言收取美元。