Compartir a través de


Almacenar y recuperar valores de fecha en intervalos de Excel mediante programación

Puede almacenar y recuperar valores en un NamedRange control o en un objeto de intervalo nativo de Excel.

Se aplica a: La información de este tema se aplica a proyectos de nivel de documento y proyectos de complementos de VSTO para Excel. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

Si almacena un valor de fecha que cae o después del 1/1/1/1900 en un intervalo mediante las herramientas de desarrollo de Office en Visual Studio, se almacena en formato ole Automation (OA). Debe usar el FromOADate método para recuperar el valor de las fechas de OLE Automation (OA). Si la fecha es anterior a 1/1/1900, se almacena como una cadena.

Nota:

Las fechas de Excel difieren de las fechas de OLE Automation durante los primeros dos meses de 1900. También hay diferencias si se activa la opción del sistema de fechas 1904. Los ejemplos de código siguientes no abordan estas diferencias.

Usar un control NamedRange

  • Este ejemplo es para personalizaciones de nivel de documento. El código siguiente debe colocarse en una clase sheet, no en la ThisWorkbook clase .

Para almacenar un valor de fecha en un intervalo con nombre

  1. Cree un NamedRange control en la celda A1.

    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. Establezca la fecha de hoy como el valor de NamedRange1.

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

Para recuperar un valor de fecha de un intervalo con nombre

  1. Recupere el valor de fecha de 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());
    

Usar intervalos nativos de Excel

Para almacenar un valor de fecha en un objeto de intervalo de Excel nativo

  1. Cree un Range objeto que represente la celda A1.

    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Establezca la fecha de hoy como el valor de rng.

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

Para recuperar un valor de fecha de un objeto de intervalo de Excel nativo

  1. Recupere el valor de fecha de 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());