Aracılığıyla paylaş


Nasıl Yapılır: Yansıma Kullanarak Excel'de Güvenli Bölge Dizgi Hazır Bilgileri Oluşturma

Office projelerinde, projenizdeki dizgileri İngilizce (United States) olarak biçimlendirirseniz, Excel yerel ayarlara duyarlı veri dizgilerini doğru şekilde görüntüler. .NET Framework 3.5'ı hedefleyen Office projesindeki bu davranışı Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute'u false 'a ayarlayarak değiştirebilirsiniz. Fakat, bu özniteliği değiştirdikten sonra dizgi hazır bilgilerini Excel'e geçirdiğiniz zaman iş parçacığının mevcut LCID'si otomatik olarak kullanılır ve veri doğru olmayan şekilde biçimlendirilebilir. Daha fazla bilgi için bkz. Excel'de Çeşitli Bölgesel Ayarlarla Veri Biçimlendirme.

Uygulama alanı: Bu konudaki bilgiler Excel 2007 ve Excel 2010 uygulamalarının belge düzeyi projelerine ve uygulama düzeyi projelerine yöneliktir. Daha fazla bilgi için bkz. Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.

.NET Framework 3.5'ı hedefleyen Offiice projelerinde Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute'u false'a ayarlarsanız, Excel nesnelerinin özellik ve yöntemlerine İngilizce veri biçimi (Yerel Ayar Kimliği 1033) kullanmak üzere belirli çağrıları zorlaması için yansımayı kullanabilirsiniz. Bunu yaptığınız zaman, özellik veya yönteme geçirilen herhangi bir dizgi için İngilizce (United States) biçimlendirmesini kullanabilirsiniz ve kod tüm yerel ayarlarda doğru olarak çalışacaktır.

Aşağıdaki örnekler, Excel belge düzeyi projelerindeki NamedRange denetiminin özelliğinin nasıl ayarlanacağını veya alınacağını gösterir, fakat aynı konular aynı zamanda uygulama düzeyi projelerindeki Excel nesneleri için de geçerlidir.

Excel aralığında yansıma kullanarak bir özelliği ayarlamak için

  1. Excel nesnesinin özellik değerini ayarlamak için InvokeMember yöntemini kullanan yardımcı bir yöntem oluşturun. Excel nesnesi için parametleri, özellik adı ve özelliğin parametrelerini ekleyin. Yardımcı yöntemde CultureInfo parametresine sahip InvokeMember tekrar yüklemesini kullanın ve İngilizce (United States) için yerel ayarlar kimliğini bu parametreye geçirin.

    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));
    }
    
  2. A5 hücresinde NamedRange denetimi oluşturun ve NamedRange1 olarak adlandırın.

    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");
    
  3. NamedRange1'ın Formula özelliğini doğrudan ayarlamak yerine SetPropertyInternational yardımcı yöntemini çağırın ve NamedRange denetimi için arka plandaki Range nesnesini geçirin, özellik adı ve değeri.

    Not

    NamedRange denetimini doğrudan geçiremezsiniz. Bunun yerine, InnerObject özelliğini kullanarak arka plandaki Range nesnesini almalısınız ve sonra bu objeyi yönteme geçirmelisiniz. Daha fazla bilgi için bkz. Ana Bilgisayar Öğelerinin ve Ana Bilgisayar Denetimlerinin Programsal Sınırlamaları.

    SetPropertyInternational(NamedRange1.InnerObject, "Formula", "=SUM(12, 34)")
    
    SetPropertyInternational(NamedRange1.InnerObject, "Formula", "=SUM(12, 34)");
    

Excel aralığından yansıma kullanarak bir özellik değerini almak için

  1. Excel nesnesinin özellik değerini almak için InvokeMember yöntemini kullanan yardımcı bir işlev oluşturun. Nesne, özellik adı ve özelliğin parametreleri yardımcı yönteme geçirilir.

    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));
    }
    
  2. GetPropertyInternational işlevini çağırın ve NamedRange ve özellik adını geçirin.

    Not

    Aşağıdaki kod örneği, çalışma sayfasında NamedRange1 adında bir NamedRange denetimi olduğunu varsayar.

    Dim formula As String = CType( _
        GetPropertyInternational(NamedRange1.InnerObject, "Formula"), String)
    
    MessageBox.Show(formula)
    
    string formula = (string)
        GetPropertyInternational(NamedRange1.InnerObject, "Formula");
    
    MessageBox.Show(formula);
    

Ayrıca bkz.

Görevler

Nasıl Yapılır: Office Çok Dilde Kullanıcı Arayüzü Hedefleme

Kavramlar

Dinamik olarak Yükleniyor ve Türler kullanmak

Excel'de Çeşitli Bölgesel Ayarlarla Veri Biçimlendirme

Office Çözümlerini Genelleştirme ve Yerelleştirme

Diğer Kaynaklar

Deploying Office Solutions

Office Çözümleri Tasarlama ve Oluşturma