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;