Partager via


Stocker et récupérer des valeurs de date par programmation dans des plages Excel

Vous pouvez stocker et récupérer des valeurs dans un NamedRange contrôle ou un objet de plage Excel natif.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document et aux projets de complément VSTO pour Excel. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Si vous stockez une valeur de date qui tombe le 1/1/1/1900 dans une plage à l’aide de Bureau outils de développement dans Visual Studio, elle est stockée au format OLE Automation (OA). Vous devez utiliser la FromOADate méthode pour récupérer la valeur des dates OLE Automation (OA). Si la date est antérieure au 1/1/1900, elle est stockée sous forme de chaîne.

Remarque

Les dates Excel diffèrent des dates OLE Automation pour les deux premiers mois de 1900. Il existe également des différences si l’option système de date 1904 est case activée. Les exemples de code ci-dessous ne traitent pas de ces différences.

Utiliser un contrôle NamedRange

  • Cet exemple concerne les personnalisations au niveau du document. Le code suivant doit être placé dans une classe de feuille, et non dans la ThisWorkbook classe.

Pour stocker une valeur de date dans une plage nommée

  1. Créez un NamedRange contrôle à la cellule A1.

    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. Définissez la date du jour comme valeur pour NamedRange1.

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

Pour récupérer une valeur de date à partir d’une plage nommée

  1. Récupérez la valeur de date à partir 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());
    

Utiliser des plages Excel natives

Pour stocker une valeur de date dans un objet de plage Excel natif

  1. Créez une Range cellule A1 qui représente.

    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Définissez la date du jour comme valeur pour rng.

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

Pour récupérer une valeur de date à partir d’un objet de plage Excel natif

  1. Récupérez la valeur de date à partir 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());