Практическое руководство. Хранение и извлечение значений дат в диапазонах Excel
Обновлен: Ноябрь 2007
Применимость |
---|
Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Значения можно сохранять и извлекать из элемента управления NamedRange или собственного объекта "диапазон" Excel.
При хранении значения даты, находящейся в диапазоне от 01.01.1900 включительно с использованием Visual Studio Tools for Office, дата сохраняется в формате OLE-автоматизации (OA). Чтобы извлечь значения дат в формате OLE-автоматизации (OA), необходимо использовать метод FromOADate. Если дата меньше 01.01.1900, то она сохраняется в виде строки.
Примечание. |
---|
Даты Excel отличаются от дат OLE-автоматизации для первых двух месяцев 1900 года. Они также отличаются, если включен параметр 1904 date system. Указанные ниже примеры кодов не используют эти отличия. |
Использование элемента управления NamedRange
- В этом примере демонстрируется настройка уровня документа. Данный код необходимо поместить в класс листа, а не в класс ThisWorkbook.
Сохранение значения даты в именованном диапазоне
Создайте элемент управления 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");
Задайте сегодняшнюю дату в качестве значения для 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
Создайте объект Range, представляющий ячейку A1.
Dim rng As Excel.Range = Me.Application.Range("A1")
Excel.Range rng = this.Application.get_Range("A1", missing);
Задайте сегодняшнюю дату в качестве значения для 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
Общие сведения о необязательных параметрах в решениях Office