Como armazenar e recuperar valores de datas em intervalos do Excel programaticamente
Você pode armazenar e recuperar valores em NamedRange controle ou um objeto do intervalo do excel nativo.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2013 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
Se você armazenar um valor de data em que esteja ou após 1/1/1900 em um intervalo usando ferramentas de desenvolvimento do Office no Visual Studio, é armazenado no formato OLE de (OA) de automação.Você deve usar o método de FromOADate para recuperar o valor de datas VELHOS de (OA) de automação.Se a data for anterior de 1/1/1900, é armazenada como uma cadeia de caracteres.
Observação |
---|
As datas do excel diferem das datas VELHOS de automação para os dois primeiros de 1900 meses.Também existem diferenças se a opção de o sistema de datas 1904 é marcada.Os exemplos de código abaixo não endereçam essas diferenças. |
usando um controle de NamedRange
- Este exemplo é para personalizações da nível.O seguinte código deve ser colocado em uma classe de folha, não na classe de ThisWorkbook .
Para armazenar um valor de data em um intervalo nomeado
Crie um controle de NamedRange na célula A1.
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
Microsoft.Office.Tools.Excel.NamedRange NamedRange1 = this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
definir a data de hoje como o valor para NamedRange1.
Dim dt As DateTime = DateTime.Now NamedRange1.Value2 = dt
DateTime dt = DateTime.Now; NamedRange1.Value2 = dt;
Para recuperar um valor de data de um intervalo nomeado
Recuperar o valor da data de NamedRange1.
Dim value As Object = NamedRange1.Value2 If Not value Is Nothing Then If TypeOf value Is Double Then dt = DateTime.FromOADate(CType(value, Double)) Else DateTime.TryParse(CType(value, String), dt) End If End If MessageBox.Show(dt.ToString())
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());
Usando intervalos nativo do excel
Para armazenar um valor de data em um intervalo objeto nativo do excel
crie Range que representa a célula A1.
Dim rng As Excel.Range = Me.Application.Range("A1")
Excel.Range rng = this.Application.get_Range("A1");
definir a data de hoje como o valor para rng.
Dim dt As DateTime = DateTime.Now rng.Value2 = dt
DateTime dt = DateTime.Now; rng.Value2 = dt;
Para recuperar um valor de data de um intervalo de objeto nativo do excel
Recuperar o valor da data de rng.
Dim value As Object = rng.Value2 If Not value Is Nothing Then If TypeOf value Is Double Then dt = DateTime.FromOADate(CType(value, Double)) Else DateTime.TryParse(CType(value, String), dt) End If End If System.Windows.Forms.MessageBox.Show(dt.ToString())
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());
Consulte também
Tarefas
Como fazer referência a intervalos de planilhas em código programaticamente
Como: adicionar controles de NamedRange às planilhas
Conceitos
Parâmetros opcionais em soluções do Office