Компонент ExcelDDEConnection.
Компонент ExcelDDEConnection представляет готовое решение, позволяющее организовать «горячий» канал DDE между приложением .NET и Excel. Компонент состоит из нескольких классов, главный из которых - ExcelDDEHotConnection. Экземпляр данного класса автоматически инициализируется в библиотеке DDEML при создании и отключается от ее при завершении своего существования.
Ниже приведены основные методы и свойства класса ExcelDDEHotConnection:
Название |
Описание |
ExcelDDEHotConnection() |
Конструктор. Осуществляет регистрацию в библиотеке DDEML |
TopicDescriptorCollection Topics |
Свойство. Ссылка на коллекцию разделов. Раздел адресуется названием книги и названием страницы |
void Dispose() |
Завершить работу объекта. Закрывает все каналы и производит отключение от библиотеки DDEML |
event AdviseDelegate Data |
Событие. Происходит при изменении содержимого любой из подписанных ячеек. Событие вызывается для каждой изменившейся ячейки. |
Коллекция разделов TopicDescriptorCollection.
Коллекция разделов представляет собой набор объектов, описывающий разделы. При добавлении раздела в коллекцию, происходит автоматическое создание канала, а при удалении – закрытие канала. Коллекция не допускает дублирование одинаковых разделов. Раздел добавляется в коллекцию только в том случае, если удалось создать канал для этого раздела.
Название | Описание |
Result Add(TopicDescriptor descriptor) |
Добавить дескриптор раздела в коллекцию. В качестве параметра передается дескриптор раздела. При добавлении происходит попытка создать канал с разделом, который описывает данный дескриптор. Если такой раздел уже есть в коллекции, или не удалось создать канал, то данный дескриптор добавлен не будет. В первом случае функция вернет код возврата Result.AlreadyExists, а во втором случае – Result.ConversStartError. В случае успешного выполнения, дескриптор раздела добавляется в коллекцию, а метод возвращает код возврата Result.OK. |
Result Add(string book, string sheet) |
Добавить дескриптор раздела в коллекцию. В качестве параметра передается название книги book и страницы - sheet. При добавлении происходит попытка создать канал с разделом, который описывает дескриптор. Если такой раздел уже есть в коллекции, или не удалось создать канал, то данный дескриптор добавлен не будет. В первом случае функция вернет код возврата Result.AlreadyExists, а во втором случае – Result.ConversStartError. В случае успешного выполнения, дескриптор раздела добавляется в коллекцию, а метод возвращает код возврата Result.OK. |
Result Remove(TopicDescriptor descriptor) |
Удалить дескриптор из коллекции. В качестве параметра передается дескриптор раздела. При удалении происходит закрытие канала связи, при этом для всех ячеек раздела выполняется транзакция завершения. Если дескриптор не существовал в коллекции, метод вернет код возврата Result.NonExistingItem, а в случае ошибок, возникших при закрытии канала – Result.ConversStopError, но при этом дескриптор будет все равно удален из раздела. В случае удачного выполнения дескриптор удаляется из коллекции, а метод возвращает код Result.OK. |
Result Remove(string book, string sheet) |
Удалить дескриптор из коллекции. В качестве параметра передается название книги - book и страницы - sheet. При удалении происходит закрытие канала связи, при этом для всех ячеек раздела выполняется транзакция завершения. Если дескриптор не существовал в коллекции, метод вернет код возврата Result.NonExistingItem, а в случае ошибок, возникших при закрытии канала – Result.ConversStopError, но при этом дескриптор будет все равно удален из раздела. В случае удачного выполнения дескриптор удаляется из коллекции, а метод возвращает код Result.OK; |
void Clear() |
Метод удаляет все дескрипторы разделов из коллекции, при этом происходит закрытие всех каналов. |
void Dispose() |
Метод завершает работу коллекции – закрывает все каналы и удаляет все дескрипторы. |
int Count |
Свойство возвращает количество разделов, зарегистрированных в коллекции. |
TopicDescriptor this[string book, string sheet] |
Возвращает дескриптор по названию книги и страницы. |
TopicDescriptor this[int index] |
Возвращает дескриптор по его порядковому номеру в коллекции. |
TopicDescriptor this[string topic] |
Возвращает дескриптор по названию раздела в формате Excel. |
Дескриптор раздела TopicDescriptor.
Экземпляр класса описывает раздел данных. Каждый раздел содержит в себе коллекцию элементов данных типа ItemDescriptor, описывающих ячейки. При добавлении ячейки происходит отправка Excel транзакции на подписку на эту ячейку, при удалении – транзакция на завершение работы с ячейкой.
Название | Описание |
TopicDescriptor(string book, string sheet) |
Конструктор. В качестве параметров получает название книги и страницы. |
Result Add(ItemDescriptor descriptor) |
Добавить дескриптор ячейки в список подписанных ячеек. В качестве параметров получает дескриптор ячейки . При добавлении происходит отправка транзакции Excel на подписку на эту ячейку. В случае успешного выполнения метод вернет код возврата Result.OK, а дескриптор будет добавлен в коллекцию. Если такой дескриптор уже существовал, или произошла ошибка при подписке, то дескриптор не будет добавлен в коллекцию. В первом случае метод вернет код возврата Result. AlreadyExists, а во втором – Result.SubscribeError. |
Result Add(int row, int col) |
Добавить дескриптор ячейки в список подписанных ячеек. В качестве параметров метод получает номер строки row и номер столбца col. При добавлении происходит отправка транзакции Excel на подписку на эту ячейку. В случае успешного выполнения метод вернет код возврата Result.OK, а дескриптор будет добавлен в коллекцию. Если такой дескриптор уже существовал, или произошла ошибка при подписке, то дескриптор не будет добавлен в коллекцию. В первом случае метод вернет код возврата Result. AlreadyExists, а во втором – Result.SubscribeError. |
Result Remove(ItemDescriptor descriptor) |
Удалить ячейку из списка подписанных ячеек. В качестве параметров принимает дескриптор ячейки. При удалении происходит отправка транзакции Excel на отписку от данной ячейки. Если при выполнении функции не произошло никаких ошибок, то метод вернет код возврата Result.OK. Если ячейка не существовала или при удалении произошли ошибки, то метод вернет в первом случае код
Result.NonExistingItem, а во втором – Result.UnsubscribeError, при этом ячейка будет удалена из списка подписанных ячеек. |
Result Remove(int row, int col) |
Удалить ячейку из списка подписанных ячеек. В качестве параметров принимает номер строки row и номер столбца col. При удалении происходит отправка транзакции Excel на отписку от данной ячейки. Если при выполнении функции не произошло никаких ошибок, то метод вернет код возврата Result.OK. Если ячейка не существовала или при удалении произошли ошибки, то метод вернет в первом случае код Result.NonExistingItem, а во втором – Result.UnsubscribeError, при этом ячейка будет удалена из списка подписанных ячеек. |
void Clear() |
Метод отменяет подписку на все ячейки из списка подписанных ячеек и очищает список. |
void Dispose() |
Метод отменяет подписку на все ячейки из списка подписанных ячеек и очищает список. |
int Count |
Свойство возвращает количество дескрипторов ячеек в списке. |
string Book |
Свойство возвращает название книги раздела, который описывает данный дескриптор. |
string Sheet |
Свойство возвращает название страницы раздела, который описывает данный дескриптор. |
string Topic |
Свойство возвращает название раздела в формате Excel, который описывает данный дескриптор. |
ItemDescriptor this[int index] |
Получить дескриптор ячейки по его порядковому номеру в списке подписанных ячеек. |
ItemDescriptor this[int row, int col] |
Получить дескриптор ячейки по номеру строки row и столбца col ячейки. |
ItemDescriptor this[string item] |
Получить дескриптор ячейки по названию в формате Excel. |
Дескриптор ячейки ItemDescriptor.
Описывает ячейку Excel.
Название | Описание |
ItemDescriptor(int row, int col) |
Конструктор. Создает дескриптор ячейки строки номер row и столбца номер col. |
int Row |
Номер строки ячейки |
int Col |
Номер столбца ячейки |
string Item |
Название ячейки в формате MS Excel |
byte[] Data |
Массив с текущим содержимым ячейки. |
Экземпляр класса передается в качестве аргумента в событии Data.
Название | Описание |
ItemDescriptor ItemDescriptor |
Дескриптор ячейки, в которой произошли изменения. Получить новое содержимое ячейки можно, воспользовавшись свойством Data |
TopicDescriptor TopicDescriptor |
Дескриптор раздела, в котором находится ячейка, содержимое которой изменилось. |