【发布时间】:2012-09-28 03:26:42
【问题描述】:
我想通过 .net 互操作访问 Excel。我需要使用不同的区域,但不想更改整个操作系统的区域。有没有办法以编程方式指定这个? ApplicationClass 的 LanguageSettings 属性是只读的。
【问题讨论】:
标签: .net excel internationalization interop ms-office
我想通过 .net 互操作访问 Excel。我需要使用不同的区域,但不想更改整个操作系统的区域。有没有办法以编程方式指定这个? ApplicationClass 的 LanguageSettings 属性是只读的。
【问题讨论】:
标签: .net excel internationalization interop ms-office
你可以设置当前线程的文化:
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
此外,当需要指定要使用的美国文化时,Excel 中存在/曾经存在错误 互操作。这取决于 excel 配置(是否应用了更新)
例如,您的操作系统文化可能是俄语,但如果您将线程的文化明确设置为 en-US,一切都会好起来的。
【讨论】:
如果是关于分隔符,你可以这样做:
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;
【讨论】:
这可能会对您的应用程序造成危险。 在我的程序中,当操作系统语言版本与 Office 语言版本不同时,程序崩溃了,因为 Office 试图自动运行语言包。奇怪的行为。
【讨论】: