ПОНЯТНО О Visual Basic NET (том 3)

       

Используем «старые» компоненты (COM)


До прихода .NET в мире тоже были озабочены использованием в одних приложениях компонентов других приложений. Самая распространенная технология, применявшаяся (и применяющаяся) для этого, называется COM, и разработанные на ее основе компоненты называются COM-компонентами. VB позволяет использовать в проектах COM-компоненты и это очень важно, так как в мире таких компонентов накопилось очень много.

Широко известными приложениями, которые поддерживают COM-технологию, являются программы из пакета Microsoft Office, в частности Microsoft Word и Microsoft Excel. Раз они поддерживают COM-технологию, значит вы можете пользоваться ими в своем проекте. Зачем это нужно? – Пусть, например, ваше приложение предназначено для получения по электронной почте неких исходных данных и автоматической распечатки на их основе красивых качественных документов. Обеспечить превращение сухих, бедно оформленных электронных писем в качественные документы с красиво отформатированными шрифтом и абзацами – задача, которая требует значительной работы программиста. С другой стороны, уже имеются готовые приложения Windows типа Microsoft Word, которые прекрасно справляются с этой задачей. Интегрируя Word в ваше приложение, вы достигаете поставленной цели.

Аналогично можно работать в вашем приложении и с электронной таблицей Microsoft Excel. Пример работы в вашем приложении с таблицей Excel мы сейчас и рассмотрим. Причем совершенно не важно, работали ли вы в Excel раньше.

Суть работы Excel. Прежде чем работать с Excel в вашем проекте, надо чуть-чуть привыкнуть к нему «живьем». На Рис. 25.8 вы можете видеть таблицу и диаграмму, созданные в Excel.

Рис. 25.8

Запустите Microsoft Excel. Он имеет примерно такой вид, как на Рис. 25.9. Основной частью Excel является таблица из многочисленных ячеек, которые вы и видите на рисунке.

Рис. 25.9

Excel предназначен для автоматического выполнения разнообразных арифметических действий с числами таблицы. Как это делается? Вы видите, что таблица разделена на ячейки. У каждой ячейки имеется адрес, как в игре «Морской бой». Например, на рисунке число 100 находится в ячейке D2. Введите в ячейки таблицы числа 100, 20 и 8, как на рисунке. Чтобы ввести число в ячейку, достаточно выделить ее мышкой и набрать число на клавиатуре. В арифметических действиях с числами таблицы обычно указываются не сами числа, а их адреса. Пусть, например, вы хотите, чтобы в ячейке A3 находилась сумма трех введенных чисел. Для этого вы выделяете ячейку A3 и вводите в нее такой текст:


=D2+E2+E3

после чего нажимаете Enter. Формула сразу же становится невидимой, а на ее месте в ячейке A3 возникает число 128, то есть сумма. Попробуйте теперь изменить одно из слагаемых, например, поменять в ячейке E3 число 8 на 1. Тут же автоматически изменится со 128 на 121 и число в ячейке A3.



В ячейки можно вводить и текст. Обычно он служит для пояснений к числам.

Сотрите ячейку A3. Давайте сохраним нашу таблицу. Для этого – Файл ® Сохранить ® Excel предложит нам сохраниться в файле под именем Книга1.xls  ®

соглашаемся. Закрываем Excel.

Листы, книги. Обратите внимание, что на рисунке присутствует несколько закладок с так называемыми листами: Лист1, Лист2, Лист3. На виду находится таблица, принадлежащая Листу1. У каждого листа – своя таблица. Таблицы, принадлежащие другим листам, на рисунке не видны. Все листы, что мы видим на рисунке, собраны в так называемую книгу – Книга1.

Excel – многодокументное приложение. Каждый документ – книга. Каждую книгу можно открыть в своем окне и сохранить в своем файле. Каждая книга состоит из нескольких листов.

Задача нашего проекта. Имеется созданный в Excel файл Книга1.xls, в котором на 1 листе в вышеуказанных трех ячейках находятся три числа. Проект должен просуммировать эти числа и отобразить их сумму в текстовом поле.

Решение. Excel достаточно «добр» и из множества своих классов и других компонентов предоставляет некоторое количество в общее пользование. Все такие объекты собраны в специальной Объектной библиотеке Excel.

Создайте обычный проект приложения Windows с кнопкой и текстовым полем. Первое, что надо сделать, это создать ссылку на объектную библиотеку Excel. Поступайте обычным образом. Зайдите в окне Solution Explorer в «папку» References. Щелкните по ней правой клавишей мыши и в контекстном меню выберите пункт Add Reference. В возникшем окне (Рис. 25.10) зайдите в закладку COM, найдите и выделите строку, выделенную на рисунке. Нажмите Select и библиотека появляется в поле в нижней части окна. ОК. Теперь объекты Excel в нашем распоряжении.





Рис. 25.10

Вводим в окно кода такой код:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Экс As Excel.Application = CreateObject("Excel.Application")

        Экс.Workbooks.Open("E:\Папка\Книга1.xls")

        Dim Лист As Excel.Worksheet = Экс.Workbooks("Книга1.xls").Worksheets("Лист1")

        TextBox1.Text = Лист.Cells(2, 4).Value + Лист.Cells(2, 5).Value + Лист.Cells(3, 5).Value

        Экс.Quit()

End Sub

Запустите проект. После нажатия кнопки в текстовом поле появится число 128.

Пояснения: Первой строкой мы объявляем и создаем при помощи метода CreateObject объект Экс класса Application пространства имен Excel, к которому получил доступ наш проект после добавления ссылки. С этого момента Excel уже запущен и незримо присутствует на экране, выполняя наши приказания, как джинн из бутылки.

Второй строкой мы открываем нужную нам книгу из файла при помощи метода Open интерфейса Workbooks, принадлежащего объекту Экс.

Третьей строкой мы объявляем переменную Лист, как объект класса Worksheet (Рабочий лист) пространства имен Excel, и тут же присваиваем ей значение нужного нам 1 листа, найдя его при помощи интерфейсов Workbooks и Worksheets.

Поскольку лист готов к работе, мы можем пользоваться его ячейками. Четвертая строка складывает значения трех его ячеек и отображает сумму в текстовом поле. Выражение

Лист.Cells(2, 4).Value

обозначает вот что: Значение (Value) ячейки (Cells), находящейся во 2 строке и 4 столбце таблицы. Это как раз наша знакомая ячейка D2. Остальное очевидно.

Пятая строка закрывает Excel. Если этого не сделать, он останется в памяти и будет занимать там много места.

Вы можете сделать нашего незримого джинна видимым при помощи оператора

Экс.Visible = True

На экране наряду с проектом появится Excel с открытым нужным листом. В нем можно нормально работать. Только оператор  Экс.Quit()  уберите, а то Excel закроется, не успев открыться.


Содержание раздела