Поделиться через


Практическое руководство. Хранение и извлечение значений дат в диапазонах Excel

Обновлен: Ноябрь 2007

Применимость

Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня документа

  • Проекты уровня приложения

Версия Microsoft Office

  • Excel 2003

  • Excel 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Значения можно сохранять и извлекать из элемента управления NamedRange или собственного объекта "диапазон" Excel.

При хранении значения даты, находящейся в диапазоне от 01.01.1900 включительно с использованием Visual Studio Tools for Office, дата сохраняется в формате OLE-автоматизации (OA). Чтобы извлечь значения дат в формате OLE-автоматизации (OA), необходимо использовать метод FromOADate. Если дата меньше 01.01.1900, то она сохраняется в виде строки.

1ad4d8d6.alert_note(ru-ru,VS.90).gifПримечание.

Даты Excel отличаются от дат OLE-автоматизации для первых двух месяцев 1900 года. Они также отличаются, если включен параметр 1904 date system. Указанные ниже примеры кодов не используют эти отличия.

Использование элемента управления NamedRange

  • В этом примере демонстрируется настройка уровня документа. Данный код необходимо поместить в класс листа, а не в класс ThisWorkbook.

Сохранение значения даты в именованном диапазоне

  1. Создайте элемент управления NamedRange в ячейке 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", missing), "NamedRange1");
    
  2. Задайте сегодняшнюю дату в качестве значения для NamedRange1.

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

Извлечение значения даты из именованного диапазона

  • Извлеките значение даты из 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());
    

Использование собственных диапазонов Excel

Сохранение значения даты в собственном объекте "диапазон" Excel

  1. Создайте объект Range, представляющий ячейку A1.

    Dim rng As Excel.Range = Me.Application.Range("A1")
    
    Excel.Range rng = this.Application.get_Range("A1", missing);
    
  2. Задайте сегодняшнюю дату в качестве значения для rng.

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

Извлечение значения даты из собственного объекта "диапазон" Excel

  • Извлеките значение даты из 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());
    

См. также

Задачи

Практическое руководство. Передача значений в ячейки листа Excel

Практическое руководство. Ссылки на диапазоны листов в коде

Практическое руководство. Добавление элементов управления NamedRange на листы

Основные понятия

Работа с диапазонами

Общие сведения об объектной модели Excel

Элемент управления NamedRange

Общие сведения о необязательных параметрах в решениях Office