Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 5135 / 389 | Оценка: 4.23 / 3.83 | Длительность: 28:12:00
Специальности: Программист, Менеджер
Лекция 10:

Возможности и применение Office Web-компонентов

Обмен данными

Как и все элементы управления ActiveX, компонент SpreadSheet не имеет собственных средств, позволяющих открыть или сохранить этот элемент - команды Open и Save не являются частью интерфейса таких элементов. Выполнение этих функций - прерогатива контейнеров, содержащих эти элементы. Тем не менее, у объекта SpreadSheet есть целый набор способов, позволяющих ему общаться с внешним миром, - передавая и получая данные.

Ввод данных

Ввод данных в электронную таблицу может осуществляться разными способами.

  • Публикация рабочей книги Excel. Когда происходит публикация рабочего листа Excel или его части в виде интерактивной Web-страницы, то создается компонент SpreadSheet с уже заполненным содержанием, источником которого является рабочий лист Excel. Это один из основных способов первоначального ввода данных, применяемый при работе с офисными документами.
  • Непосредственный ввод данных. Данные можно вводить в ячейки электронной таблицы в процессе интерактивной работы пользователя с компонентом SpreadSheet. Замечу, что эти данные сохраняются только на момент сеанса и, если не предпринять специальных мер, будут утеряны при закрытии Web-страницы.
  • Вставка данных из буфера. Данные, находящиеся в буфере, могут быть вставлены в нужную область электронной таблицы нашего компонента. Заметьте, в буфер данные могут попадать в процессе работы с разными приложениями. Таким путем можно перенести в электронную таблицу компонента SpreadSheet, например, таблицу документа Word, не говоря уже о данных различных областей рабочих листов Excel.
  • Вставка данных, находящихся в интрасети. Конечно, документы, используемые для этой цели, должны содержать соответствующие таблицы или списки данных со специальными разделителями. Этот способ требует программной работы с объектом SpreadSheet. Замечу, что объект SpreadSheet среди многих других свойств имеет свойство HTMLURL, которое содержит URL, указывающий источник данных для загрузки. URL должен возвращать HTML-документ, в котором есть, по крайней мере, одна таблица.
  • Ввод данных непосредственно из контейнера. Понятно, что важно иметь возможность обмениваться данными с контейнером, - как принимать от него данные, так и передавать ему данные. В этом случае обеспечивается нормальный способ сохранения результатов работы, выполненных в очередном сеансе. Я продемонстрирую эту возможность на небольшом примере. В опубликованный документ, приведенный на рис. 10.1, я добавил поле ввода. Вот соответствующий HTML-текст:
    <input Id = "myTextField" type = text size = 30>
    При просмотре этого документа в Internet Explorer я ввел в это поле текст "Привет от компонентов OWC!". В одну из ячеек электронной таблицы ввел формулу:
    =Document.myTextField.Value
    Заметьте, здесь используется возможность работы в ячейках электронной таблицы с объектом " Document ", задающим контейнер, в данном случае - Web-страницу, просматриваемую в Internet Explorer. Зная ID элементов, располагаемых на этих страницах, можно добраться до их свойств, - в данном примере до свойства Value поля ввода. Надеюсь, понятно, что значением данной формулы будет текст, введенный в поле ввода.
Вывод данных

Операции ввода-вывода данных симметричны. Почти каждому способу ввода данных соответствует свой способ вывода:

  • Экспорт в Excel. Созданную или модифицированную в процессе сеанса работы электронную таблицу можно экспортировать в Excel, создав в момент экспорта новую рабочую книгу. Выполняется эта операция одним щелчком кнопки экспорта данных, о которой я говорил при описании интерфейса элемента SpreadSheet. Очевидно, эта операция является обратной к операции публикации страниц рабочей книги Excel. Экспорт - это один из основных способов сохранения результатов работы с офисными документами в сети.
  • Копирование данных в буфер. При этом данные, перенесенные в буфер, могут затем использоваться в процессе работы с разными приложениями. Таким путем можно перенести часть или всю электронную таблицу компонента SpreadSheet, например, в таблицу документа Word, или в заданную область рабочего листа Excel.
  • Вывод данных непосредственно в контейнер. Я продемонстрирую эту возможность на небольшом примере. В нем данные из некоторой области компонента SpreadSheet переносятся в таблицу, создаваемую на Web-странице. Вот соответствующий код, обеспечивающий эту работу:
<!-- Передача данных из таблицы компонента SpreadSheet на Web-страницу!	-->
<table datasrc = #BookFour_29850_WebCalc.A2:D6 border = 1>
<thead>
	<tr>
		<th>Итоги продаж</th>
		<th>Иванов </th>
		<th>Петров </th>
		<th>Сидоров </th>
</thead>
<tbody>
	<tr>
		<td> <div datafld = "A"> </div> </td>
		<td> <div datafld = "B"> </div> </td>
		<td> <div datafld = "C"> </div> </td>
		<td> <div datafld = "D"> </div> </td>
	</tr>
</tbody>
</table>

Надеюсь, Вы понимаете, что я продолжаю работать с документом, приведенным на рис. 10.1. В данном случае в нем создается новая таблица, источником данных для которой является наш компонент SpreadSheet. В параметре таблицы datasrc указывается ID компонента, после точки следует адрес области данных. Префикс # указывает, что источник данных находится на той же странице, что и строящаяся таблица. Вот как выглядит построенная таблица:

Таблица, построенная по данным компонента SpreadSheet

увеличить изображение
Рис. 10.3. Таблица, построенная по данным компонента SpreadSheet
Объектная модель компонента SpreadSheet и программирование

Для программиста компонент SpreadSheet является обычным объектом, свойства и методы которого он может вызывать в своих программах, также как и проводить обработку событий, происходящих в процессе работы пользователя с компонентом. Замечу, что объектная модель компонента SpreadSheet во многом напоминает соответствующую часть объектной модели Excel. Программирование позволяет построить собственное решение, в полной мере использующее возможности этого компонента.

Прежде чем перейти к деталям, хочу напомнить об одной особенности построения объектной модели компонент OWC - объектные модели всех компонент построены независимо, нет объекта, объединяющего их, в который все они были бы вложены. Каждый из четырех рассматриваемых нами объектов является корневым объектом в соответствующей модели.

Я приведу сейчас описание основных элементов объектной модели компонента SpreadSheet, проводя по ходу дела сравнение с соответствующими объектами Excel. Напомню, что описание объектной модели Excel я дал в главе 11. Справочная система по объектам OWC доступна и находится в файле msowcvba.chm, путь к которому обычно следующий: C:\ProgranFiles\Microsoft Office\Office\1033.

Давайте вспомним, как устроена объектная модель Excel, На верхнем уровне здесь находится объект Application, в который среди прочего вложена коллекция рабочих книг - Workbooks, каждая из которых содержит коллекцию листов книги - Sheets. Листы книги могут быть разного типа, определяющее значение играют рабочие листы - объекты Worksheet. Одним из главных объектов рабочего листа, с которым чаще всего приходится работать программисту, является объект Range.

В объектной модели компонента SpreadSheet на верхнем уровне расположен сам объект SpreadSheet, он в определенном смысле играет роль объекта Application и во многом наследует его свойства и методы. Конечно же, никакой коллекции рабочих листов, не говоря уже о рабочих книгах, в объект SpreadSheet не вложено, в него встроен лишь объект Worksheet, задающий единственный рабочий лист, связанный с компонентом. Этот объект во многом устроен также как и его тезка в Excel, в частности, в него встроен объект Range, позволяющий программисту работать с областями рабочего листа, связанного с компонентом SpreadSheet.

Объекты SpreadSheet и Excel Application. Сравнительный анализ

Давайте рассмотрим свойства, общие для объектов SpreadSheet и Excel Application. Их сводка дана в следующей таблице:

Таблица 10.1. Общие свойства объектов SpreadSheet и Excel Application
Свойства Назначение
ActiveCell, ActiveSheet Активная ячейка и активная страница. Свойство ActiveSheet для объекта SpreadSheet играет значительно более важную роль, чем для объекта Application, поскольку именно оно возвращает центральный элемент этой модели - объект WorkSheet - тот единственный рабочий лист, который задает электронную таблицу.
Cells, Columns, Rows Коллекции ячеек, строк и столбцов
DisplayScrollBar Булево свойство, позволяющее включать или отключать скроллинг. У объекта Spreadsheet есть два свойства, позволяющие отдельно управлять вертикальным и горизонтальным скроллингом.
EnableEvents Булево свойство, позволяющее включать события объекта.
MoveAfterReturn, MoveAfretReturnDirection Булево свойство, позволяющее указать, будет ли изменяться активная ячейка после ввода в нее данных и нажатия клавиши Enter, и свойство, задающее направление перемещения к новой активной ячейке.
Range Свойство, возвращающее объект Range. Аргументы свойства позволяют задать требуемую область рабочего листа.
Selection Свойство, возвращающее выделенный (активный) объект. Если выделена область в рабочем листе, то этот объект принадлежит классу Range.
Version Свойство, возвращающее версию.

Общих свойств не столь уже и много. Может быть, более интересно понять, каких свойств объекта Application не имеет объект SpreadSheet, и какие дополнительные свойства он приобрел.

Каких свойств не имеет объект SpreadSheet

По понятным причинам объект SpreadSheet устроен намного проще, чем объект Application, а посему и многих свойств объекта Application он не имеет. Вот, например, чего у него нет:

  • Ряда Active -свойств, возвращающих активную диаграмму, рабочую книгу, принтер или окно.
  • Свойств AddIns и ComAddIns, возвращающих соответствующие коллекции. Объект SpreadSheet может работать только с COM объектами.
  • Свойств, возвращающих и позволяющих работать с такими объектами, как AnswerWizard, Assistant, Dialogs, FileSearch, CommandBars, Charts, Workbooks, Sheets, Windows и рядом других мощных объектов Excel.
  • У объекта Application намного богаче совокупность булевых Display - свойств, позволяющая в Excel управлять отображением на экране тех или иных элементов, например, строки статуса.
  • Аналогично обстоит дело и с Enable -свойствами. У объекта Application их значительно больше, они позволяют, например, включить или отключить звук или анимацию.

Я не буду подробно останавливаться на всех возможностях объекта Application. Перейдем к рассмотрению тех свойств объекта SpreadSheet, которых нет у объекта Application.

Ольга Гафарова
Ольга Гафарова

Добрый день. Подскажите формулы при решении задачи на рис. 2.2 в лекции №2. Закон Ома, какие должны использоваться формулы для I и R

Курс: Основы офисного программирования и документы Excel

Серегй Лушников
Серегй Лушников