Spécifiez la région et la culture pour Microsoft Office interop

J'aimerais accéder à Excel via .net interop. Je dois utiliser une région différente, mais je ne veux pas modifier la région pour l'set du operating system. Existe-t-il un moyen de le spécifier par programme? La propriété LanguageSettings de ApplicationClass est en lecture seule.

Vous pouvez définir la culture du fil actuel:

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

En outre, il y avait / était un bug dans Excel quand il fallait spécifier la culture en-US pour utiliser Interop. Cela dépend de la configuration excel (que les mises à jour soient ou non appliquées)

Votre culture OS peut être, pour une instance, russe, mais si vous définissez explicitement la culture du thread dans les États-Unis, tout sera correct.

Cela pourrait être dangereux pour votre request. Dans mon programme, lorsque la version du langage OS était différente de la version du langage Office, le programme a échoué car Office a essayé de lancer automatiquement un pack de langue. Comportement étrange.

S'il s'agit des séparateurs, vous pouvez le faire de cette façon:

  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;