2010-12-10 13 views
0

Ich möchte Excel über .net interop zugreifen. Ich muss eine andere Region verwenden, möchte aber nicht die Region für das gesamte Betriebssystem ändern. Gibt es eine Möglichkeit, dies programmgesteuert anzugeben? Die LanguageSettings-Eigenschaft der ApplicationClass ist schreibgeschützt.Geben Sie Region und Kultur für Microsoft Office Interop an

Antwort

0

Es könnte für Ihre Anwendung gefährlich sein. In meinem Programm, als OS-Sprachversion war anders als Office-Sprachversion stürzte dann Programm abgestürzt, weil Office versucht, automatisch Language Pack auszuführen. Komisches Verhalten.

+0

Ja „Altes Format oder ungültige Typbibliothek“. Ich denke ein Language Interface Pack würde funktionieren, aber Microsoft berechnet $ für meine gewünschte Sprache. –

1

können Sie die aktuellen Threads Kultur gesetzt:

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

Weiterhin ist/war in Excel einen Fehler, wenn es notwendig war, en-US-Kultur angeben Interop zu verwenden. Es hängt von der Excel-Konfiguration ab (ob Updates angewendet wurden oder nicht)

Ihre OS-Kultur kann für ein Beispiel Russisch sein, aber wenn Sie die Kultur des Threads explizit auf en-US setzen, wird alles in Ordnung sein.

+0

Scheint nicht zu funktionieren. –

0

Wenn es um die Separatoren ist, können Sie es auf diese Weise tun:

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; 
Verwandte Themen