Condividi tramite


Procedura: specificare stringhe letterali indipendenti dalle impostazioni internazionali in Excel mediante la reflection

Nei progetti di Office, Excel visualizza correttamente le stringhe di dati sensibili alle impostazioni locali se si formattano le stringhe nel progetto come inglese (Stati Uniti). È possibile modificare questo comportamento in un progetto di Office che ha come destinazione .NET Framework 3.5 impostando Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute su false. Tuttavia, quando i valori letterali stringa vengono passati a Excel dopo aver modificato questo attributo, viene utilizzato automaticamente l'LCID corrente del thread ed è possibile che i dati vengano formattati in modo errato. Per ulteriori informazioni, vedere Formattazione di dati in Excel con varie impostazioni internazionali.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Excel 2007 ed Excel 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Se si imposta Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute su false in un progetto Office che ha come destinazione .NET Framework 3.5, è possibile utilizzare la reflection per imporre a determinate chiamate a proprietà e metodi di progetti di Excel di utilizzare il formato dati (ID delle impostazioni locali 1033) della lingua inglese (Stati Uniti). Quando si esegue questa operazione, è possibile utilizzare la formattazione inglese (Stati Uniti) per qualsiasi stringa passata alla proprietà o al metodo e il codice funzionerà correttamente in tutte le impostazioni locali.

Negli esempi seguenti viene dimostrato come impostare o ottenere una proprietà di un controllo NamedRange in un progetto a livello di documento per Excel, ma gli stessi concetti si applicano anche agli oggetti di Excel nei progetti a livello di applicazione.

Per impostare una proprietà in un intervallo di Excel mediante reflection

  1. Creare un metodo di supporto che utilizza il metodo InvokeMember per impostare un valore della proprietà di un oggetto di Excel. Includere i parametri per l'oggetto di Excel, il nome della proprietà e i parametri della proprietà. Nel metodo di supporto, utilizzare un overload InvokeMember che dispone di un parametro CultureInfo e passare l'ID delle impostazioni locali per la lingua inglese (Stati Uniti) a questo parametro.

    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. Creare un controllo NamedRange nella cella A5 denominato 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");
    
  3. Invece di impostare direttamente la proprietà Formula di NamedRange1, chiamare il metodo di supporto SetPropertyInternational e passare l'oggetto Range sottostante per il controllo NamedRange, il nome della proprietà e il valore.

    Nota

    Non è possibile passare direttamente il controllo NamedRange. Al contrario, è necessario ottenere l'oggetto Range sottostante di Excel tramite la proprietà InnerObject, quindi passare questo oggetto al metodo. Per ulteriori informazioni, vedere Limitazioni a livello di codice degli elementi e dei controlli host.

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

Per recuperare un valore di proprietà da un intervallo di Excel mediante reflection

  1. Creare una funzione di supporto che utilizza il metodo InvokeMember per ottenere un valore della proprietà di un oggetto di Excel. L'oggetto, il nome della proprietà e i parametri della proprietà vengono passati al metodo di supporto.

    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. Chiamare la funzione GetPropertyInternational e passare il controllo NamedRange e il nome della proprietà.

    Nota

    Nell'esempio di codice riportato di seguito si presume che nel foglio di lavoro sia disponibile un controllo NamedRange denominato NamedRange1.

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

Vedere anche

Attività

Procedura: utilizzare l'interfaccia utente multilingue (MUI) di Office

Concetti

Caricamento e utilizzo dinamico dei tipi

Formattazione di dati in Excel con varie impostazioni internazionali

Globalizzazione e localizzazione di soluzioni Office

Altre risorse

Deploying Office Solutions

Progettazione e creazione di soluzioni Office