- •11. Объектная модель Excel
- •11.1. Работа с книгами
- •11.1.1. Создание новой книги
- •11.1.2. Открытие существующей книги
- •11.1.3. Закрытие книг
- •11.1.4. Сохранение открытой книги
- •11.1.5. Получение и установка пути к файлу книги по умолчанию
- •11.1.6. Отображение диалогового окна для открытия файлов
- •11.2. Работа с листами
- •11.2.1. Добавление новых листов
- •11.2.6. Предварительный просмотр и печать листов
- •11.2.7. Перемещение листов в книгах
- •11.2.8. Создание и удаление групп на листахExcel
- •11.2.9. Изменение форматирования строк листа
- •11.2.10. Копирование данных и форматирование по листам
- •11.2.11. Проверка орфографии на листах
- •11.2.12. Программная сортировка данных
- •11.3. Работа с диапазонами
- •11.3.1. Ссылки на диапазоны
- •11.3.2. Автоматическое заполнение диапазонов
- •11.3.3. Хранение и извлечение значений дат в диапазонах
- •11.3.4. Применение стилей к диапазонам и их отмена
- •11.3.5. Поиск текста в диапазоне ячеек
- •11.3.6. Применение цвета к тексту в диапазоне ячеек
- •11.3.7. Программное выполнение вычислений
- •11.4. Работа с ячейками
- •11.5. Структурирование вExcel
11.3.1. Ссылки на диапазоны
– ссылка на содержимое элемента управления NamedRange:
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
...
NamedRange1.Value2 = "Range value"
– ссылка на содержимое собственного диапазона ExcelRange:
Dim rng As Excel.Range = Me.Application.Range("A1")
...
rng.Value2 = "Range value"
11.3.2. Автоматическое заполнение диапазонов
Пример, заполнения трех диапазонов:
PrivateSubAutoFill()
Dim rng As Excel.Range = Me.Application.Range("B1")
rng.AutoFill(Me.Application.Range("B1:B5"), _
Excel.XlAutoFillType.xlFillWeekdays)
rng = Me.Application.Range("C1")
rng.AutoFill(Me.Application.Range("C1:C5"), _
Excel.XlAutoFillType.xlFillMonths)
rng = Me.Application.Range("D1:D2")
rng.AutoFill(Me.Application.Range("D1:D5"), _
Excel.XlAutoFillType.xlFillSeries)
End Sub
11.3.3. Хранение и извлечение значений дат в диапазонах
1. Использование элемента управления NamedRangeв проекте уровня документа.
– Сохранение значения даты в именованном диапазоне.
'Создание элемента управления NamedRangeв ячейкеA1.
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
'Задание сегодняшней даты в качестве значения для NamedRange1.
Dim dt As DateTime = 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())
2. Использование собственных диапазонов Excel Rangeв проекте уровня приложения.
– Сохранение значения даты в собственном диапазоне Excel Range.
'Создание объекта Range, представляющего ячейкуA1.
DimrngAsExcel.Range=Me.Application.Range("A1")
'Задание сегодняшней даты в качестве значения для rng.
Dim dt As DateTime = 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())
11.3.4. Применение стилей к диапазонам и их отмена
1. Применение стиля к именованному диапазону в настройке уровня документа:
– Создание нового стиля таблицы и задание его атрибутов.
Dim style As Excel.Style = _
Globals.ThisWorkbook.Styles.Add("NewStyle")
style.Font.Name = "Verdana"
style.Font.Size = 12
style.Font.Color = System.Drawing.ColorTranslator.ToOle( _
System.Drawing.Color.Red)
style.Interior.Color = System.Drawing.ColorTranslator.ToOle( _
System.Drawing.Color.Gray)
style.Interior.Pattern = Excel.XlPattern.xlPatternSolid
– Создание элемента управления NamedRange, присваивание ему текста, а затем применение нового стиля.
Dim rangeStyles As Microsoft.Office.Tools.Excel.NamedRange = _
Me.Controls.AddNamedRange(Me.Range("A1"), "rangeStyles")
rangeStyles.Value2 = "'Style Test"
rangeStyles.Style = "NewStyle"
rangeStyles.Columns.AutoFit()
2. Применение стиля к именованному диапазону в надстройке уровня приложения:
– Создание нового стиля таблицы и задание его атрибутов.
Dim style As Excel.Style = _
Me.Application.ActiveWorkbook.Styles.Add("NewStyle")
style.Font.Name = "Verdana"
style.Font.Size = 12
style.Font.Color = System.Drawing.ColorTranslator.ToOle( _
System.Drawing.Color.Red)
style.Interior.Color = System.Drawing.ColorTranslator.ToOle( _
System.Drawing.Color.Gray)
style.Interior.Pattern = Excel.XlPattern.xlPatternSolid
– Создание элемента управления Range, присваивание ему текста, а затем применение нового стиля.
Dim rangeStyles As Excel.Range = Me.Application.Range("A1")
rangeStyles.Value2 = "'StyleTest"
rangeStyles.Style = "NewStyle"
rangeStyles.Columns.AutoFit()
3. Отмена стилей, примененных к диапазонам в книге.
– Отмена стилей в элементе управления NamedRange:
Me.rangeStyles.Style = "Normal"
– Отмена стилей в собственном диапазоне Excel книги:
Dim rng As Excel.Range = Me.Application.Range("A1")
rng.Style = "Normal"