.net 指定区域&;Microsoft Office互操作的区域性
我想通过.net互操作访问Excel。我需要使用不同的区域,但不想更改整个操作系统的区域。有没有办法以编程方式指定此选项?ApplicationClass的LanguageSettings属性是只读的。它可能会对应用程序造成威胁。.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
在我的程序中,当操作系统语言版本和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;
是的,“旧格式或无效类型库”。我认为语言界面包可以工作,但微软对我想要的语言收取美元。