Gewusst wie: Sicherstellen der richtigen regionalen Verwendung von Zeichenfolgenliteralen in Excel mithilfe der Reflektion
Aktualisiert: November 2007
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office. Projekttyp
Microsoft Office-Version
Weitere Informationen finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Formatieren Sie, wenn Sie Visual Studio Tools for Office-Standardeinstellungen verwenden, gebietsschemaabhängige Datenzeichenfolgen stets als Englisch (USA). Excel zeigt die Daten dann automatisch im richtigen Format an. Wenn Sie die Standardeinstellungen ändern, indem Sie ExcelLocale1033Attribute auf false festlegen, und anschließend Zeichenfolgenliterale an Excel übergeben, wird automatisch die aktuelle LCID des Threads verwendet, und die Daten werden möglicherweise falsch formatiert. Weitere Informationen finden Sie unter Formatieren von Daten in Excel mit verschiedenen regionalen Einstellungen.
Wenn Sie ExcelLocale1033Attribute auf false festlegen, können Sie Reflektion verwenden, um eine Eigenschaft festzulegen oder abzurufen oder eine Methode im Zielbereich aufzurufen. Übergeben Sie die CultureInfo für Englisch (USA), sodass Sie die englische Bezeichnung von Zeichenfolgen verwenden können. Damit wird die korrekte Funktion in allen Gebietsschemas erreicht.
So legen Sie mit Reflektion eine Eigenschaft in einem Excel-Bereich fest
Erstellen Sie eine als SetPropertyInternational bezeichnete Hilfsfunktion, um die LCID für Englisch (USA) zu übergeben, wenn Sie die Eigenschaftenwerte in Excel durch Übergeben eines Zeichenfolgenliterals übergeben.
Shared Function SetPropertyInternational( _ ByVal target As Object, ByVal name As String, _ ByVal ParamArray parameters() As Object) As Object Return target.GetType.InvokeMember(name, _ Reflection.BindingFlags.Instance Or Reflection.BindingFlags.SetProperty, _ Nothing, target, parameters, _ System.Globalization.CultureInfo.GetCultureInfo(1033)) End Function
static object SetPropertyInternational(object target, string name, params object[] args) { return target.GetType().InvokeMember(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Public, null, target, args, new System.Globalization.CultureInfo(1033)); }
Erstellen Sie ein NamedRange-Steuerelement in Zelle A5, und nennen Sie es NamedRange1.
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Me.Controls.AddNamedRange(Me.Range("A5"), "NamedRange1")
Microsoft.Office.Tools.Excel.NamedRange NamedRange1 = this.Controls.AddNamedRange(this.Range["A5", missing], "NamedRange1");
Statt die Formula-Eigenschaft von NamedRange1 direkt festzulegen, rufen Sie die SetPropertyInternational-Funktion auf, und übergeben Sie ihr den NamedRange, den Eigenschaftennamen und den Wert.
Hinweis: Sie können das NamedRange-Steuerelement nicht direkt übergeben, sondern Sie müssen das zugrunde liegende Range-Objekt durch Aufrufen der InnerObject-Methode übergeben. Weitere Informationen finden Sie unter Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen.
SetPropertyInternational(NamedRange1.InnerObject, "Formula", "=SUM(12, 34)")
SetPropertyInternational(NamedRange1.InnerObject, "Formula", "=SUM(12, 34)");
So rufen Sie mit Reflektion einen Eigenschaftenwert aus einem Excel-Bereich ab
Erstellen Sie eine als GetPropertyInternational bezeichnete Funktion, um die LCID festzulegen, wenn Sie Eigenschaftenwerte aus Excel-Bereichen abrufen.
Shared Function GetPropertyInternational( _ ByVal target As Object, ByVal name As String, _ ByVal ParamArray parameters() As Object) As Object Return target.GetType.InvokeMember(name, _ Reflection.BindingFlags.Instance Or Reflection.BindingFlags.GetProperty, _ Nothing, target, parameters, _ System.Globalization.CultureInfo.GetCultureInfo(1033)) End Function
static object GetPropertyInternational(object target, string name, params object[] args) { return target.GetType().InvokeMember(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Public, null, target, args, new System.Globalization.CultureInfo(1033)); }
Rufen Sie die GetPropertyInternational-Funktion auf, und übergeben Sie ihr NamedRange und den Eigenschaftennamen.
Hinweis: Im folgenden Codebeispiel wird davon ausgegangen, dass sich ein NamedRange-Steuerelement mit dem Namen NamedRange1 auf dem Arbeitsblatt befindet.
Dim formula As String = CType( _ GetPropertyInternational(NamedRange1.InnerObject, "Formula"), String) MessageBox.Show(formula)
string formula = (string) GetPropertyInternational(NamedRange1.InnerObject, "Formula"); MessageBox.Show(formula);
Siehe auch
Aufgaben
Gewusst wie: Anpassen an die mehrsprachige Benutzeroberfläche von Office
Konzepte
Formatieren von Daten in Excel mit verschiedenen regionalen Einstellungen
Globalisierung und Lokalisierung von Office-Projektmappen
Erstellen von Office-Projektmappen in Visual Studio