ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.01.2026

Просмотров: 286

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

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"


11.3.5. Поиск текста в диапазоне ячеек

PrivateSubDemoFind()

'1.Объявление переменных для хранения первого найденного

'диапазона и текущего найденного диапазона.

Dim currentFind As Excel.Range = Nothing

Dim firstFind As Excel.Range = Nothing

Dim Fruits As Excel.Range = Me.Application.Range("A1", "B2")

'2.Выполнение первого поиска с указанием всех параметров,

'кроме ячейки, после которой следует искать. Все параметры

'должны определяться каждый раз при вызове этого метода, так

'как они могут быть отменены в пользовательском интерфейсе.

currentFind=Fruits.Find("apples", , _

Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _

Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)

'3.Продолжать поиск, пока есть совпадения.

While Not currentFind Is Nothing

'4.Сравнение первого найденного диапазона (firstFind)

'с Nothing. Если переменнаяfirstFindне содержит

'значения, сохранить в ней найденный диапазон

'(currentFind).

If firstFind Is Nothing Then

firstFind = currentFind

'5.Выход из цикла, если адрес найденного диапазона

'совпадает с адресом первого найденного диапазона.

ElseIf currentFind.Address = firstFind.Address Then

Exit While

End If

'6.Изменение внешнего вида найденного диапазона.

With currentFind.Font

.Color = System.Drawing.ColorTranslator.ToOle( _

System.Drawing.Color.Red)

.Bold = True

End With

'7.Выполнение следующего поиска.

currentFind = Fruits.FindNext(currentFind)

End While

End Sub

11.3.6. Применение цвета к тексту в диапазоне ячеек

1. Применение цвета к элементу управления NamedRangeв настройке уровня документа.

'Создание элемента управления NamedRange в ячейке A1.

Dim rng As Microsoft.Office.Tools.Excel.NamedRange = _

Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")

'Задание цвета текста в элементе управления NamedRange.

rng.Font.Color = System.Drawing.ColorTranslator.ToOle( _

System.Drawing.Color.Red)

2. Применение цвета к собственному диапазону Excel Range.

'Создание диапазона, начиная с ячейки A1,

'и установка цвета текста в нем.

Dim rng2 As Excel.Range = Me.Application.Range("A1")

rng2.Font.Color = System.Drawing.ColorTranslator.ToOle( _

System.Drawing.Color.Red)

11.3.7. Программное выполнение вычислений

1. Выполнение вычислений в элементе управления NamedRange.


'Создание именованного диапазона.

Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _

Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")

'Вызов метода Calculate указанного диапазона.

NamedRange1.Calculate()

2. Выполнение вычислений в собственном диапазоне Excel Range.

'Создание именованного диапазона.

Dim rng As Excel.Range = Me.Application.Range("A1")

'Вызов метода Calculate указанного диапазона.

rng.Calculate()

11.4. Работа с ячейками

– отображение текста в существующем элементе управления NamedRange.

Me.message.Value2 = "Hello world"

– отображение текста в собственном диапазоне Excel в проекте уровня приложения.

Dim rng As Excel.Range = Globals.Sheet1.Range("A1")

rng.Value2 = "Hello world"


11.5. Структурирование вExcel

Рис.1. Создание групп

Рис.2. Свернутые группы

Рис.3. Полностью свернутые группы

Таблица 4. Основные свойства и методы класса Outline(http://msdn.microsoft.com/ru-ru/library/microsoft.office.interop.excel.outline_members.aspx)

Имя

Описание

Свойства

Application

Возвращает объект Application, представляющий приложение Microsoft Excel

AutomaticStyles (Boolean)

Указывает, должен ли Excel применять к структурам автоматические стили

SummaryColumn(XlSummaryColumn)

Возвращает или устанавливает местонахождение итоговых столбцов в структуре. У перечислимого XlSummaryColumnдва возможных значения:xlSummaryOnLeftиxlSummaryOnRight

SummaryRow (XlSummaryRow)

Возвращает или устанавливает местонахождение итоговых строк в структуре. У перечислимого XlSummaryRowдва возможных значения:xlSummaryAboveиxlSummaryBelow

Методы

ShowLevels (RowLevels, ColumnLevels)

Позволяет свертывать или развертывать группы структуры на нужном уровне строки и/или столбца. Методу можно передать два параметра, причем хотя бы один должен быть указан. Параметры ColumnLevelsиRowLevels– определяют число уровней строки/столбца струк-туры для отображения. Если структура содержит меньше уровней, чем определено соответствую-щим параметром, то Microsoft Excel отображает все уровни. Если же соответствующий параметр равен 0 (нулю) или опущен, то никаких действий на строках/столбцах выполняться не будет