Condividi tramite


Archiviare e recuperare valori di data a livello di codice negli intervalli di Excel

È possibile archiviare e recuperare valori in un NamedRange controllo o in un oggetto intervallo di Excel nativo.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento e ai progetti di componente aggiuntivo VSTO per Excel. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Se si archivia un valore di data che cade su o dopo 1/1/1900 in un intervallo usando gli strumenti di sviluppo di Office in Visual Studio, viene archiviato in formato OA (OLE Automation). È necessario utilizzare il FromOADate metodo per recuperare il valore delle date OA (OLE Automation). Se la data è precedente al 1/1/1900, viene archiviata come stringa.

Nota

Le date di Excel differiscono dalle date di automazione OLE per i primi due mesi del 1900. Esistono anche differenze se è selezionata l'opzione di sistema data 1904. Gli esempi di codice seguenti non soddisfano queste differenze.

Usare un controllo NamedRange

  • Questo esempio è relativo alle personalizzazioni a livello di documento. Il codice seguente deve essere inserito in una classe foglio, non nella ThisWorkbook classe .

Per archiviare un valore di data in un intervallo denominato

  1. Creare un NamedRange controllo nella cella A1.

    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. Impostare la data odierna come valore per NamedRange1.

    DateTime dt = DateTime.Now;
    NamedRange1.Value2 = dt;
    

Per recuperare un valore di data da un intervallo denominato

  1. Recuperare il valore della data da NamedRange1.

    object value = NamedRange1.Value2;
    
    if (value != null)
    {
        if (value is double)
        {
            dt = DateTime.FromOADate((double)value);
        }
        else
        {
            DateTime.TryParse((string)value, out dt);
        }
    }
    MessageBox.Show(dt.ToString());
    

Usare intervalli di Excel nativi

Per archiviare un valore di data in un oggetto intervallo di Excel nativo

  1. Creare un oggetto Range che rappresenta la cella A1.

    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Impostare la data odierna come valore per rng.

    DateTime dt = DateTime.Now;
    rng.Value2 = dt;
    

Per recuperare un valore di data da un oggetto intervallo di Excel nativo

  1. Recuperare il valore della data da rng.

    object value = rng.Value2;
    
    if (value != null)
    {
        if (value is double)
        {
            dt = DateTime.FromOADate((double)value);
        }
        else
        {
            DateTime.TryParse((string)value, out dt);
        }
    }
    System.Windows.Forms.MessageBox.Show(dt.ToString());