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

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

Дополнительные свойства объекта SpreadSheet

Рассмотрим те свойства, которые приобрел объект SpreadSheet. Многие из них связаны с главным предназначением этого объекта - обеспечением возможности интерактивной работы с электронной таблицей на Web-страницах.

  • ActivePane - это свойство заменяет свойство ActiveWindow и возвращает объект Pane - активное подокно, в котором размещается электронная таблица.
  • AllowPropertyToolbox - булево свойство, позволяющее включать или отключать панель свойств в период выполнения.
  • Управление видимыми размерами электронной таблицы. Ряд свойств позволяют управлять видимыми размерами. Свойство ViewableRange позволяет задать объект Range, определяющий область электронной таблицы, допустимую для просмотра пользователем. Остальная область будет для него скрыта. Свойства MaxWidth, MaxHeight определяют максимальные размеры видимой части электронной таблицы по ширине и высоте. Они могут быть заданы либо в пикселях, либо в процентах от величины контейнера, содержащего электронную таблицу. Наконец, булево свойство AutoFit позволяет наилучшим способом отобразить допустимую для просмотра область. Если его значение задано, как True, то электронная таблица будет отображать допустимую для просмотра область со скроллингом или без него в зависимости от числа строк и столбцов области и значений MaxWidth и MaxHeight. Вот пример установки этих свойств в обработчике события OnLoad:
    <script language=vbscript>
    Sub Window_onLoad()
    	'Инициализация параметров электронной таблицы
    	With BooKFour_1787_WebCalc
    		.ViewableRange = "A1:G10"
    		.MaxWidth = "90%" 
    		.MaxHeight = "90%"
    		.AutoFit = True
    	End With
    End Sub
    </script>
    Этот код я добавил в конец тега <body> html-кода, полученного при сохранении рабочего листа книги Excel с именем BookFour в виде интерактивной Web-страницы. Событие OnLoad возникает при загрузке Web-страницы в браузер, соответственно вызывается обработчик этого события. Поэтому при открытии страницы будут установлены параметры, задающие область просмотра и то, как она будет отображаться. Вот как выглядит эта страница, открытая в Internet Explorer:
    Управление отображением области, допустимой для просмотра

    увеличить изображение
    Рис. 10.4. Управление отображением области, допустимой для просмотра
    Заметьте, если уменьшить значение параметров MaxWidth и MaxHeight, например, до 50%, то область отображения электронной таблицы уменьшится, и появятся полосы, позволяющие осуществлять скроллинг внутри области.
  • Свойство BuildNumber задает номер версии компонента.
  • Булево свойство CanUndo со статусом "только для чтения" возвращает значение True, если предыдущее действие может быть отменено.
  • Работа с именованными константами в VBScript. Свойство Constants позволяет справиться с проблемой типизированных констант в VBScript. Язык VBScript, как известно, не типизирован. С другой стороны, константы, используемые при работе с объектами, типизированы и принадлежат типам, задаваемым соответствующими перечислениями. Свойство Constants позволяет обойти ограничение VBScript и дает возможность работы с именованными константами, принадлежащим различным перечислениям. Это свойство задает набор из всех именованных констант VB. После вызова свойства достаточно указать через точку имя константы, чтобы работать с ней в VBScript также как и в VB /VBA . Вот небольшой пример кода на использование трех последних свойств:
    Dim myc 	'Задание набора констант
    		Set myc = .Constants
     		.Range("D5:F8").Borders.Weight = myc.owcLineWeightThick
    		.Range("D5:F8").Borders.Color = "Green"
    		.TitleBar.Caption = "OWC SpreadSheet Build - " & .BuildNumber
    		.TitleBar.Font.Color = "Green"
    		If .CanUndo Then .TitleBar.Font.Color = RGB(255,125,125)
    Этот код я добавил в предыдущую процедуру Window_onLoad. Не буду приводить рисунка, демонстрирующего изменения внешнего вида электронной таблицы. Замечу, что все отработало должным образом. Свойство CanUndo вернуло значение True, так что цвет в заголовке окончательно был установлен с использованием функции RGB.
  • Управление данными. Я уже говорил о вводе-выводе данных в электронную таблицу. Сейчас я более подробно расскажу о свойствах компонента SpreadSheet, предназначенных для управления вводом и выводом данных. Свойство CSVData позволяет задать строку, являющуюся источником данных для ввода в ячейки электронной таблицы. Данные в строке должны разделяться символом " ," (запятая). Свойство позволяет, как получать данные, так и возвращать строку данных. Свойство CSVURL также устанавливает или возвращает данные, разделенные символом " запятая ", но источник данных в этом случае задается URL-адресом. Свойство HTMLData позволяет получать или возвращать данные, представленные в HTML-таблице. Свойство HTMLURL позволяет работать с данными такого же формата, но источник данных задается URL-адресом. Это может быть, например, адрес Web-страницы, на которой расположена HTML-таблица. Источником может быть и страница документа Excel 2000, сохраненная как интерактивная Web-страница. Если одновременно заданы несколько из этих свойств, то возникает дилемма, откуда брать данные. Свойство DataType позволяет решить данную проблему. Четыре возможных значения этого свойства совпадают с именами четырех рассмотренных только что свойств, задающих источники данных. Значение DataType однозначно определяет, каким свойством следует пользоваться для доставки данных.
  • Display -свойства. Серия этих свойств позволяет отображать те или иные элементы электронной таблицы - заголовки столбцов и строк, сетку, вертикальную и горизонтальную полосу прокрутки, панель свойств и панель инструментов, заголовок таблицы. Вот их перечисление: DisplayColHeaders, DisplayRowHeaders, DisplayGridlines, DisplayHorizontalScrollBar, DisplayVerticalScrollBar, DisplayPropertyToolbox, DisplayToolbar, DisplayTitlebar. Конечно же, всеми этими элементами можно управлять и в объектной модели Excel, но там они не являются свойствами объекта Application.
  • Enable -свойства. Серия этих свойств позволяет включать или отключать те или иные возможности электронной таблицы - автоматическое вычисление, возможность отката. Вот эти свойства: EnableAutoCalculate, EnableUndo.
  • ScreenUpdating - булево свойство, позволяющее отключить перерисовку экрана при обновлении данных. Полезно пользоваться этим свойством при программном обновлении данных. До начала обновления установить это свойство, как False, затем обновить все необходимые данные, затем установить для свойства значение True, чтобы перерисовать экран, когда все данные изменились.

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

Методы объекта SpreadSheet

Методов у объекта SpreadSheet немного - всего 9. Три из них схожи с методами объекта Excel.Application. Два из этих методов - Union и Intersect задают объединение и пересечение областей электронной таблицы, возвращая соответствующий объект Range в качестве результата. От одноименных методов объекта Application отличаются числом возможных аргументов. У методов объекта SpreadSheet аргументов два - Range1 и Range2, которые и задают области, пересечение или объединение которых ищется. Методы объекта Application позволяют проводить эти операции одновременно над большим числом аргументов. Третий общий метод Undo также имеет некоторые различия в семантике. Для объекта SpreadSheet он позволяет не только отменить последнее действие, сделанное, например, пользователем в процессе работы с интерфейсными объектами, но и отменить действия последнего выполняемого программного блока, помеченного специальными метками " BeginUndo " и " EndUndo ".

Из 6 методов, специально созданных для объекта SpreadSheet, методы:

  • BeginUndo, EndUndo - позволяют произвести разметку программного блока, чтобы можно было при необходимости отменить его выполнение, вызвав метод Undo.
  • LoadText - позволяет загрузить в электронную таблицу данные из текстового файла. В отличие от свойства CSVURL, позволяющего решать схожую задачу, ограничителем данных в текстовом файле может выступать не только символ " запятая ", но и другие ограничители - пробелы, символы табуляции и другие.
  • Refresh - позволяет провести обновление данных, перезагружая их из источника и перерисовывая объект - электронную таблицу.
  • UpdatePropertyToolbox - позволяет обновить значения свойств, заданных панелью свойств.
  • AddIn - добавляет Addin к объекту, позволяя работать с его свойствами и методами.
Объект SpreadSheet.WorkSheet

Получить объект WorkSheet можно двумя способами - можно спуститься вниз по иерархии, вызвав свойство ActiveSheet корневого объекта SpreadSheet, можно подняться вверх по иерархии, вызвав свойство Parent объекта Range.

Свойства объекта

Объект SpreadSheet.WorkSheet большинство своих свойств унаследовал от одноименного объекта в стандартной модели Excel. Поэтому мне остается их только перечислить, а за описанием можно обратиться к главе 11, где рассматриваются объекты Excel, в том числе и объект WorkSheet. Вот краткая характеристика подобных свойств объекта:

  • Cells, Columns, Rows, Range - свойства, возвращающие одноименные объекты. Заметьте, этими свойствами обладает и корневой объект SpreadSheet. Упомяну еще одно свойство - ViewableRange, общее для этих двух объектов, которое задает область, допустимую для просмотра. Пример использования этого свойства приводился.
  • AutoFilter, AutoFilterMode, EnableAutoFilter, FilterMode, EnableAutoCalculate, Parent, UsedRange. Большинство свойств этой группы предназначено для работы с фильтрами. Чуть выше в одном из разделов этой главы я останавливался на особенностях фильтрации данных при работе с объектом SpreadSheet.

Рассмотрю теперь свойства, имеющие некоторую специфику:

  • Protection - свойство, возвращающее объект Protection, с помощью свойств которого и устанавливается защита. Свойство Enabled объекта Protection устанавливает, включена ли защита или нет. Если она включена, то остальные булевы свойства определяют, что именно защищается. Например, свойство AllowSorting позволяет задать допустимость сортировки данных в электронной таблице, а свойства AllowDeletingRows и AllowInsertingRows - удаление и вставку строк таблицы.
  • FreezePanes - булево свойство, имеющее статус "только для чтения", возвращает значение True, когда электронная таблица содержит "замороженные" подокна.
  • VisibleRange - свойство, возвращающее объект Range, содержащий видимую область электронной таблицы. Заметьте, видимая область может не совпадать с областью, допустимой для просмотра, возвращаемой при вызове свойства ViewableRange.
Методы объекта

Объект имеет 5 методов: Calculate, Eval, ShowAllData, Export, Scroll, первые три из которых в этом списке унаследованы от объекта WorkSheet модели Excel.

Метод Export(FileName, ExportAction) позволяет экспортировать электронную таблицу. Второй аргумент метода указывает нужно ли открыть таблицу в Excel или сохранить ее в файле, имя которого задается первым аргументом метода.

Метод Scroll(Range) производит горизонтальную и вертикальную прокрутку так, чтобы область, заданная аргументом попала в левый верхний угол электронной таблицы.

Объект SpreadSheet.Range

Объект Range является основой основ в объектной модели Excel. Также обстоит дело и в модели компонента SpreadSheet. Десятки свойств и методов различных объектов этой модели возвращают в качестве результата объект Range. Заметьте, коллекции Cells, Rows, Columns, возвращаемые одноименными свойствами, являются одновременно объектами Range. Такие свойства как Range, Selection, ViewableRange, VisibleRange, такие методы как Union, Intersection и многие другие - возвращают объект Range.

Модель этого объекта хорошо отработана еще в Excel и потому не удивительно, что объект SpreadSheet.Range унаследовал большую часть свойств объекта Excel.Range. Конечно, часть свойств исходного объекта была потеряна - исчезла возможность работы с формулами над массивами, возможность хранения зависимостей, работы с циклическими ссылками, но основные свойства объекта Excel.Range сохранились. Заметьте, у объекта SpreadSheet.Range почти не появилось новых свойств, которых не было бы у объекта Excel.Range. Достаточно сказать, что из 46 свойств объекта SpreadSheet.Range 45 свойств перешли по наследству от объекта Excel.Range. Появилось лишь одно новое свойство - HTMLData, о котором уже шла речь при рассмотрении объекта SpreadSheet. Для объекта Range это свойство имеет статус "только для чтения" и позволяет вернуть HTML-таблицу, хранящуюся в ячейках области, заданной объектом Range.

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

Приведу пример программной работы с объектами Range. Заметьте, эти объекты уже появлялись в ранее приведенной процедуре - обработчике события OnLoad объекта Window. Но еще один пример не помешает. К Web-странице, показанной на рис. 10.4, я добавил командную кнопку. Вот описание соответствующего тега:

<p><input type="button" value="Работа с объектом Range" 
				name="myButton" OnClick = WorkWithRange></p>

Далее я написал обработчик события Click для этой кнопки, в котором создаю и работаю с объектами Range нашей электронной таблицы, размещенной на этой странице. Вот VBScript код этого обработчика:

Sub WorkWithRange()

	'Работа с областями электронной таблицы
	Dim myc 	'Задание набора констант
	Dim myr, myr1, myr2, myr3, myr4, myr5, myr6 	'объекты Range
	Dim strFormula	'Строка, задающая формулу

	With BooKFour_1787_WebCalc
		Set myc = .Constants
		Set myr2 = .Range("E12:G14")
		myr2.Borders.Weight = myc.owcLineWeightMedium
		myr2.Borders.Color = "Blue"
		'Изменяю область, доступную для просмотра
		.ViewableRange = "A1:G20"
		'Создаю объекты Range для программной работы с ними
		Set myr = .Range("A11:G20")
		With myr
			.Font.Size = 12
			.Font.Bold = True
			Set myr1 = .Cells(2,5)
			myr1.Value = "Строки и столбцы"
			Set myr3 = myr1.Offset(1)
			myr3.Value = myr.Rows.Count
			Set myr4 =myr1.Offset(1,1)
			myr4.Value = myr.Columns.Count 
			Set myr5 = myr1.Offset(2)
			strFormula = "=" & myr3.Address & "+" & myr4.Address
			myr5.Formula = strFormula
			Set myr6 = myr1.Offset(2,2)
			strFormula = "=" & myr3.Address & "*" & myr4.Address
			myr6.Formula = "=E13 * F13"
			'Замораживание подокна
			myr.FreezePanes myc.ssFreezeTop
		End With 
	End With

End Sub

В этом примере я создаю большое число объектов Range. В процессе работы с этими объектами создаются объекты Font и Borders, как результат вызова соответствующих свойств. Здесь же появляются коллекции Cells, Columns, Rows, являющиеся, как я уже говорил, объектами Range. Я использую различные свойства и методы объектов Range, - в частности, свойства ViewableRange, Address, Value, Formula, методы Offset и FreezePanes.

Взгляните, как выглядит страница в Internet Explorer после нажатия в окне браузера командной кнопки с именем "Работа с объектом Range":

Программная работа с областями электронной таблицы

увеличить изображение
Рис. 10.5. Программная работа с областями электронной таблицы
Ольга Гафарова
Ольга Гафарова

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

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

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