Compartilhar via


Armazenar e recuperar programaticamente valores de data em intervalos do Excel

Você pode armazenar e recuperar valores em um controle ou em um NamedRange objeto de intervalo nativo do Excel.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Excel. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Se você armazenar um valor de data que cai em ou após 1/1/1900 em um intervalo usando ferramentas de desenvolvimento do Office no Visual Studio, ele é armazenado no formato OLE Automation (OA). Você deve usar o método para recuperar o FromOADate valor de datas de automação OLE (OA). Se a data for anterior a 1/1/1900, ela será armazenada como uma cadeia de caracteres.

Observação

As datas do Excel diferem das datas de automação OLE para os dois primeiros meses de 1900. Também há diferenças se a opção de sistema de data 1904 estiver marcada. Os exemplos de código abaixo não abordam essas diferenças.

Usar um controle NamedRange

  • Este exemplo é para personalizações em nível de documento. O código a seguir deve ser colocado em uma classe de folha, não na ThisWorkbook classe.

Para armazenar um valor de data em um intervalo nomeado

  1. Crie um NamedRange controle na célula A1.

    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. Defina a data de hoje como o valor de NamedRange1.

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

Para recuperar um valor de data de um intervalo nomeado

  1. Recupere o valor de data 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 do Excel

Para armazenar um valor de data em um objeto de intervalo nativo do Excel

  1. Crie um que represente a Range célula A1.

    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Defina a data de hoje como o valor de rng.

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

Para recuperar um valor de data de um objeto de intervalo nativo do Excel

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