PC Magazine/RE logo
(С) СК Пресс 6/96
PC Magazine, October 24, 1995, p. 255

Таблицы в документах Web

Рэй Данкан


С появлением версии языка HTML 3.0 и программы просмотра Netscape появилась возможность распространять информацию в табличной форме в сети WWW.

Одновременно с развитием системы World-Wide Web происходит стремительное совершенствование языка разметки гипертекста HTML. HTML - это особый язык, основанный на текстовом формате и предназначенный дл разметки публикуемых в сети Web документов (см. статью "Введение в HTML", PC Magazine/Russion Edition, 11/95, с.148). Первая его версия, обычно обозначаемая номерами 0.9 или 1.0, была создана для публикации в Web научных материалов. Она предоставляла следующие возможности: использование заголовков шести уровней и простых атрибутов символов, выделение цитат и листингов исходных текстов программ, несколько разновидностей списков, вставка графики, задание гиперсвязей, адресующих к другим документам и изображениям. Первой широко распространенной реализацией начального варианта языка HTML стала графическая Web-программа просмотра NCSA Mosaic, версия 1.0.3.

Следующая версия языка HTML - 2.0 - разработана дл повышения качества взаимодействия интерактивных Web-программ. Она предусматривает самый широкий набор элементов управления - всплывающие или ниспадающие меню (списки выбора), метки выбора, кнопки, поля текстового ввода, которые можно задействовать при создании форм, служащих для получения информации от пользователя. Практическое применение этих возможностей не заставило себя долго ждать. Начали создаваться разнообразные опросные формы общего назначения, Web-ориентированные программы генерации запросов и независимые от платформы внешние интерфейсы для организации публикации баз данных в среде Web. Первой повсеместно распространенной программой просмотра, реализовавшей работу с формами, стала система Netscape Navigator, версия 1.0.

Сейчас появилась новая спецификация HTML, прежде именовавшаяся "HTML-Plus", а теперь переименованная в HTML, версия 3.0. В ней введем целый ряд новых функций, наиболее важная из которых - простой в применении, но мощный инструмент формирования таблиц. Благодаря своей элегантности, гибкости и визуальной привлекательности таблицы быстро внедряются в практику. Они замещают вставляемые графические изображения и HTML-списки нескольких типов для структурированного отображени меню и данных. На момент подготовки этой статьи есть только одна программа просмотра, реализующая в полной мере средства работы с таблицами, - Netscape, версия 1.1.

Во многих отношениях HTML-таблицы сильно напоминают таблицы Microsoft Word. Вы указываете определенную часть документа, которая будет представлена в виде массива ячеек с произвольным числом строк и столбцов, причем каждая ячейка может содержать любую комбинацию текстовых и графических элементов. Внутри ячейки допускаются самые разнообразные варианты форматировани текста независимо от остальных ячеек той же таблицы - примерно так, как если бы внутри каждой ячейки был записан небольшой документ, обрабатываемый собственным текстовым процессором. Однако HTML-таблицы имеют интересные особенности, обычно не реализуемые в текстовых процессорах, например независимость от используемой аппаратной платформы, динамическое определение размеров и возможность вложения таблиц друг в друга.

Сейчас еще рано говорить об окончательно сложившейс спецификации HTML 3.0, так что отдельные положени данной статьи могут оказаться устаревшими к моменту ее опубликования. Кроме того, версия 1.1 программы Netscape, распознает ряд команд обработки таблиц, пока отсутствующих в самой спецификации HTML 3.0. Поэтому другие программы просмотра, появляющиеся на рынке и имеющие средства работы с таблицами, могут эти команды не предусматривать. Однако вследствие доминирующих позиций самой Netscape она стала стандартом де-факто, и на ее использование ориентируются большинство публикующихся в Web. Есть, следовательно, все основани надеяться, что в ближайшем будущем развитие HTML 3.0 и Netscape приведет к одной единой табличной спецификации.

Для получения наиболее свежей информации о правилах оформления документов HTML 3.0, а также подробного описания табличных управляющих кодов HTML следует обращаться непосредственно к самой службе Web: доступ к локальному архиву Консорциума World-Wide Web осуществляется по адресу http://www.w3.org.

Основные правила разметки HTML-таблиц

Для указания начала и конца HTML-таблицы используются управляющие коды <TABLE> и </TABLE>. Они должны располагаться внутри раздела <BODY>. Документ может содержать произвольное число таблиц, причем допускается вложение таблиц друг в друга (однако при таком заполнении следует соблюдать особую внимательность).

Внутри пары кодов <TABLE> каждая строка таблицы обрамляется парой кодов <TR> и </TR>, а кажда отдельная ячейка в строке - парой <TD> и </TD>. Заголовки в таблице помечаются парой <TH> и </TH>; они по существу аналогичны кодам <TD> и </TD>, за единственным исключением: текст заголовков выделяетс полужирным шрифтом и размещается по центру. Таким образом, схема документа с заглавием и отдельной таблицей 2х2 будет выглядеть следующим образом: <HTML> <HEAD> <TITLE>Текст заглавия</TITLE> </HEAD> <BODY> <H1>Текст заголовка</H1> <TABLE> <TR> <TH>Заголовок столбца 1</TH> <TH>Заголовок столбца 2</TH> </TR> <TR> <TD>Текст в ячейке</TD> <TD>Текст в ячейке</TD> </TR> </TABLE> </BODY> </HTML> Программа просмотра Netscape, как правило, сразу же начинает отображать текст, недожидаясь окончания его приема. По мере поступления очередных порций текста обновляется состояние линейки прокрутки, и это происходит до тех пор, пока документ не будет передан полностью. Однако вы, вероятно, уже заметили, что при использовании встроенной графики могут возникать задержки в отображении самого текста, пока программе Netscape не станет известен размер этого изображения. Когда она встречает код <TABLE>, ситуация аналогична - отображение любой части таблицы происходит лишь после того, как вся таблица будет получена от сервера целиком и станет возможным определить ее оптимальную компоновку в соответствии с размерами столбцов и ячеек.

Рамки и надписи на таблицах

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

Для того чтобы добавить в таблицу оформленные по умолчанию рамку и линии сетки, следует включить в код <TABLE>, выполняющий инициализацию текущей таблицы, управляющий параметр BORDER. Например: <TABLE BORDER> . . . </TABLE> Однако возможность независимого управлени используемыми в таблице стилями показа рамки и линий сетки отсутствует. Толщина и форма этих элементов могут отличаться для разных программ просмотра; подобные явления происходят и при реализацией кода горизонтальной линейки <HR>, которая в каждом отдельном случае индивидуальна. Предлагаемые по умолчанию программой Netscape рамки и линии сетки имеют привлекательный внешний вид: они оттенены и выглядят объемными.

Надписи на таблицах можно задать с помощью пары управляющих кодов <CAPTION> и </CAPTION>. Они должны располагаться внутри пары кодов <TABLE> и </TABLE>, но за пределами любой из пар <TH>, <TR> или <TD>. Текст надписи размещается по центру всей таблицы и при необходимости разбивается на несколько строк. В сам код <CAPTION> можно включить необязательный управляющий параметр ALIGN, который имеет допустимые значения "top" (сверху) и "bottom" (снизу) для указания расположени надписи - выше или ниже таблицы; если параметр ALIGN не задан, надпись будет помещена над таблицы.

Для повышения уровня контроля над рамками и линиями сетки в Netscape используется расширенная по сравнению с HTML 3.0 спецификация кода <TABLE>: добавлены управляющие параметры CELLSPACING и CELLPADDING. Например, для создания таблицы с рамкой толщиной 10 пиксел и показом линий сетки следует задать код <TABLE> со следующим параметром CELLSPACING: <TABLE BORDER CELLSPACING="10"> . . . </TABLE> Управляющий параметр CELLPADDING похож на CELLSPACING и имеет тот же синтаксис, но применяетс для задания размера свободного пространства (отступа) между рамкой или линией сетки таблицы и текстовыми или графическими объектами внутри ячейки.

На лист. 1 приведен исходный текст на языке HTML дл примеров таблиц.


Лист. 1. Исходный текст HTML-документа, демонстрирующего простые таблицы с рамками и линиями сетки и без таковых. Учтите, что управляющие параметры CELLSPACING и CELLPADDING для кода представляют собой расширения программы Netscape и в настоящее время не отражены в проекте стандарта HTML 3.0. На рис. 1 показано, как выглядит данный документ на экране при использовании программы просмотра Netscape. <HTML> <HEAD> <TITLE> HTWL Tables Demo #1 </TITLE> <BODY> <H1>Table Borders and Captions</H1> <HR><P> <TABLE> <CAPTION>Demo Table with Caption<BR>But without Border</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>Col. 2 Heading</TH></TB> <TR><TD>Col. 1 Row 2 Text</TD><TD>Col. 2 Row 2 Text</TD></TR> </TABLE> <P><HR><P> <TABLE BORDER> <CAPTION>Demo Table With Caption<BR>and Default Border</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>Col. 2 Heading</TH></TR> <TR><TD>Col. 1 Row 2 Text</TD><TD>Col. 2 Row 2 Text</TD></TR> </TABLE> <P><HR><P> <TABLE CELLSPACING=10 CELLPADDING=5 BORDER> <CAPTION>Demo Table With Caption, 10-Pixel Border, and 5-Pixel Cell Padding</CAPTION> <TR><TH>Col. 1 Headlng</TH><TH>Col. 2 Heading</TH></TR> <TR><TD>Col. 1 Row 2 Text</TD><TD>Col. 2 Row 2 Text</TD></TR> </TABLE> <P><HR> <ADDRESS> Created 08-01-95 / Last Modified 08-01-95 <BR> Cedars-Sinai Medical Center / <A HREF= "mailto:duncan@csmc.edu">duncan@csmc.edu</A> </ADDRESS> </BODY> </HTML>
Рис. 1. Так выглядит на экране при использовании Web-программы просмотра Netscape Navigator, версия 1.1, HTML-документ, приведенный на лист. 1. В данном примере показаны несколько простых таблиц с рамками и линиями сетки и без таковых.

Table Borders and Captions


Demo Table with Caption
But without Border
Col. 1 HeadingCol. 2 Heading
Col. 1 Row 2 TextCol. 2 Row 2 Text


Demo Table With Caption
and Default Border
Col. 1 HeadingCol. 2 Heading
Col. 1 Row 2 TextCol. 2 Row 2 Text


Demo Table With Caption, 10-Pixel Border, and 5-Pixel Cell Padding
Col. 1 HeadlngCol. 2 Heading
Col. 1 Row 2 TextCol. 2 Row 2 Text


Created 08-01-95 / Last Modified 08-01-95
Cedars-Sinai Medical Center / duncan@csmc.edu

Форматирование текста внутри ячейки

Каждую отдельную ячейку внутри таблицы можно рассматривать как небольшую область для независимого форматирования. Все, что вы знаете о кодах HTML, управляющих показом текста в Web-программах просмотра, остается в силе и на данном уровне. С помощью кодов <P>, <BR> и <HR> можно управлять расположением текста внутри ячейки точно так же, как в любой другой части HTML-документа. Внутри ячеек допускается использование кодов заголовков - от <H1> до <H6>; они ведут себ здесь совершенно обычным образом, в том числе при выполнении принудительных переводов строк и обеспечении дополнительных промежутков выше и ниже заголовка. Столь же привычно работают коды форматирования символов <B>, <I>, <TT>, <EM>, <STRONG> и все прочие. Наконец, в ячейках таблицы можно задавать коды <IMG> вставки графики и коды <A> гиперсвязей (anchor) - по тем же правилам, что и в любом другом месте.

Динамическая настройка размеров строк и столбцов в программе просмотра осуществляется с учетом особенностей позиционирования текста, хорошо известных пользователям электронных таблиц. Для этого в спецификации HTML 3.0 предусмотрены управляющие параметры NOWRAP, ALIGN и VALIGN, добавляемые в коды <TH>, <TR> и <TD>. При задании NOWRAP отключаетс автоматический принудительный перевод строк текста внутри ячейки. Однако, как правило, лучше избегать использования этого параметра, так как оно сильно препятствует нормальному отображению на экране всей таблицы с учетом имеющихся ограничений размеров окна. Параметр ALIGN служит для указания, каким должно быть горизонтальное расположение текста внутри ячейки, и может иметь значения выравнивания "left" (по левому краю), "center" (по центру) или "right" (по правому краю). Параметр VALIGN управляет расположением текста по вертикали и может принимать значения "top" (по верхнему краю), "middle" (посередине), "bottom" (по нижнему краю) или "baseline" (по базовой линии).

Если управляющие параметры NOWRAP, ALIGN и VALIGN задать в коде <TR>, то область их действи распространится на все ячейки данной строки. Если же эти параметры включить в код <TD>, то они будут относиться только к конкретной ячейке, причем последние два из них, указанные в коде <TD>, будут отменять действие любого из параметров ALIGN или VALIGN, заданных в кодах <TR>. Следует также учесть, что использование управляющего параметра VALIGN="baseline" имеет смысл только на уровне кода <TR>, поскольку оно вызывает привязку текста во всех ячейках отдельной строки к единой базовой линии (целесообразность введения такого выравнивания не очевидна до тех пор, пока не придется работать с таблицами достаточно сложного вида).

На лист. 2 приведен исходный текст HTML-документа, создающий ряд простых таблиц с демонстрацией примеров команд форматирования разных категорий - заголовков, текстового потока, символов - и команд выравнивани текста.


Лист. 2. Исходный текст HTML-документа, демонстрирующего команду простого форматирования и выравнивания текста внутри ячеек. На рис. 2 показано, как выглядит данный документ на экране при использовании программы просмотра Netscape.
<HTML> <HEAD> <TITLE> HTML Tables Demo #2 </TITLE> <BODY> <H1>Table Text Flow and Character Attributes</H1> <HR><P> <TABLE BORDER> <CAPTION>Table Demonstrating Text Flow and Character Formatting Tags</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>col. 2 Heading</TH></TR> <TR><TD><H1>A Level 1 Heading</H1></TD> <TD>Here are 2 lines of text in a cell<HR> separated by a Horizontal Rule tag.</TD></TR> <TR><TD>Here are two paragraphs in a single cell. <P>This is the 2nd paragraph.</TD> <TD>Here are 2 lines of text in a cell,<BR> separated by a Line-break tag.</TD></TR> <TR><TD><B>Here is some text with the Bold tag.</B></TD> <TD><I>Here is some text with the Italic tag.</I></TD></TR> <TR><TD><TT>Here is some text with the TTY tag.</TT></TD> <TD><CODE>Here is some text with the Code tag.</CODE></TD></TR> </TABLE> <P><HR><P> <TABLE BORDER> <CAPTION>Table Demonstrating Alignment Tags</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>Col. 2 Headlng</TH></TR> <TR><TD ALIGN="center" VALlGN="middle">Centered middle-aligned text.</TD> <TD>Here is a bunch of text in a cell with default alignment. Here is a bunch of text in a cell.</TD></TR> <TR><TD ALlGN="left">Left-aligned text.</TD> <TD ALIGN="right">Rlght-aligned text.</TD></TR> <TR><TD>Here is a bunch of text in a cell with default alignment. Here is a bunch of text in a cell.</TD> <TD ALIGN="center" VALlGN="top">Centered top-aligned text.</TD></TR> <TR><TD>Here is a bunch of text in a cell with default alignment. Here is a bunch of text in a cell.</TD> <TD ALIGN="center" VALIGN="bottom">Centered bottom-aligned text.</TD></TR> </TABLE> <P><HR> <ADDRESS> Created 08-01-95 / Last Modified 08-01-95 <BR> Cedars-Sinai Medical Center / <A HREF= "mailto:duncan@csmc. edu">duncan@csmc.edu</A> </ADDRESS> </BODY> </HTML>
Рис. 2. Так выглядит на экране при использовании Web-программы просмотра Netscape Navigator, версия 1.1, HTML-документ, приведенный на лист. 2

Table Text Flow and Character Attributes


Table Demonstrating Text Flow and Character Formatting Tags
Col. 1 Headingcol. 2 Heading

A Level 1 Heading

Here are 2 lines of text in a cell
separated by a Horizontal Rule tag.
Here are two paragraphs in a single cell.

This is the 2nd paragraph.

Here are 2 lines of text in a cell,
separated by a Line-break tag.
Here is some text with the Bold tag. Here is some text with the Italic tag.
Here is some text with the TTY tag. Here is some text with the Code tag.


Table Demonstrating Alignment Tags
Col. 1 HeadingCol. 2 Headlng
Centered middle-aligned text. Here is a bunch of text in a cell with default alignment. Here is a bunch of text in a cell.
Left-aligned text. Rlght-aligned text.
Here is a bunch of text in a cell with default alignment. Here is a bunch of text in a cell. Centered top-aligned text.
Here is a bunch of text in a cell with default alignment. Here is a bunch of text in a cell. Centered bottom-aligned text.


Created 08-01-95 / Last Modified 08-01-95
Cedars-Sinai Medical Center / duncan@csmc.edu

Объединение ячеек и управление их размерами

При создании своих локальных архивов и меню с применением таблиц вместо привычных ранее списков и вставляемых графических изображений очень скоро вы ощутите потребность в выполнении операции объединени смежных по горизонтали или вертикали ячеек, чтобы объем текста в конкретных ячейках не влиял на окончательный вид всей таблицы. В спецификации HTML 3.0 данна возможность реализована с помощью управляющих параметров <COLSPAN> и <ROWSPAN>, используемых в коде <TD>. Атрибуту COLSPAN следует присвоить числовое значение, определяющее, на сколько столбцов нужно расширить текущую ячейку по горизонтали слева направо. Правила применения атрибута ROWSPAN в коде <TD> аналогичны, только здесь указывается, сколько строк должна захватить текущая ячейка по вертикали сверху вниз.

Правильно установить атрибуты COLSPAN и ROWSPAN - это не такая уж простая задача, особенно при отсутствии мощных редакторов HTML, позволяющих разрабатывать и заполнять таблицы визуально, а затем генерировать соответствующие HTML-коды. Если по невнимательности задать ячейкам такой атрибут раздвижки по столбцам и строкам, который приведет к их взаимному перекрытию и конфликтам, то результат непредсказуем. Однако гораздо большие неприятности могут произойти при создании дополнительных ячеек для строки или столбца, в составе которых содержится ячейка с атрибутом COLSPAN или ROWSPAN. Раздвижка может выйти за пределы самой таблицы и разрушить всю ее структуру.

Тем не менее в большинстве случаев проводима программой просмотра оценка содержимого таблицы и динамическое вычисление размеров ее строк и столбцов дают в результате эстетически соразмерное изображение с эффективным использованием реальной площади окна вывода. Бывают, однако, случаи, когда автор хочет самостоятельно контролировать абсолютную или относительную ширину всей таблицы в пределах окна вывода либо некоторых ее столбцов. Эта возможность в программе Netscape реализуется через управляющий параметр WIDTH, который можно задать в любом из кодов: <TABLE>, <TH> или <TD>. Значением параметра WIDTH является число, представляющее собой либо абсолютный размер в пикселах, либо процентную долю от общей ширины окна или таблицы.

На лист. 3 приведен исходный текст HTML-документа с несколькими примерами таблиц, где фигурируют управляющие параметры COLSPAN, ROWSPAN и WIDTH.


Лист. 3. Исходный текст HTML-документа, демонстрирующего примеры объединения столбцов и строк и использования управляющего параметра WIDTH для настройки ширины таблицы. На рис. 3 показано, как выглядит данный документ на экране при использовании программы просмотра Netscape.
<HTML> <HEAD> <TITLE> HTML Tables Demo #3 </TITLE> <BODY> <H1>Table Row/Column Spanning and Width Control</H1> <HR><P> <TABLE BORDER> <CAPTION>Demo Table With Row and Column spanning</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>Col. 2 Heading</TH><TH>Col. 3 Heading</TH></TR> <TR><TD COLSPAN="2">Col. 1 Row 2, spanning 2 columns.</TD> <TD>Col. 3 Row 2</TD></TR> <TR><TD>Col. 1 Row 3</TD> <TD>Col. 2 Row 3</TD> <TD ROWSPAN="2">Col. 3 Row 3, spanning 2 rows.</TD></TR> <TR><TD>Col. 1 Row 4</TD> <TD>Col. 2 Row 4</TD></TR> </TABLE> <P><HR><P> <TABLE BORDER WIDTH="100"> <CAPTION>Demo Table With Width = 100 Pixels</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>Col. 2 Heading</TH></TR> <TR><TD>Col. 1 Row 2 Text</TD><TD>Col. 2 Row 2 Text</TD></TR> </TABLE> <P><HR><P> <TABLE BORDER WIDTH="100%"> <CAPTION>Demo Table With Width = 100%</CAPTION> <TR><TH>Col. 1 Heading</TH><TH>Col. 2 Heading</TH></TR> <TR><TD>Col. 1 Row 2 Text</TD><TD>Col. 2 Row 2 Text</TD></TR> </TABLE> <P><HR> <ADDRESS> Created 08-01-95 / Last Modified 08-01-95 <BR> Cedars-Sinai Medical Center / <A HREF= "mailto: duncan@csmc.edu">duncan@csmc.edu</A> </ADDRESS> </ADDRESS> </BODY> </HTML>
Рис. 3. Так выглядит на экране при использовании Web-программы просмотра Netscape Navigator, версия 1.1, HTML-документ, приведенный на лист. 3.

Table Row/Column Spanning and Width Control


Demo Table With Row and Column spanning
Col. 1 HeadingCol. 2 HeadingCol. 3 Heading
Col. 1 Row 2, spanning 2 columns. Col. 3 Row 2
Col. 1 Row 3 Col. 2 Row 3 Col. 3 Row 3, spanning 2 rows.
Col. 1 Row 4 Col. 2 Row 4


Demo Table With Width = 100 Pixels
Col. 1 HeadingCol. 2 Heading
Col. 1 Row 2 TextCol. 2 Row 2 Text


Demo Table With Width = 100%
Col. 1 HeadingCol. 2 Heading
Col. 1 Row 2 TextCol. 2 Row 2 Text


Created 08-01-95 / Last Modified 08-01-95
Cedars-Sinai Medical Center / duncan@csmc.edu

Практическое использование таблиц

В статье "Публикация баз данных в World-Wide Web" (PC Magazine/Russian Edition, спецвыпуск 2/95, с. 101) я рассматривал несколько стратегий организации публикации баз данных в сети Web и приводил несколько примеров программ на языке Access/Visual Basic дл экспорта и HTML-разметки некоторой базы данных со следующими полями: фамилия сотрудников, место жительства и телефон. Когда та статья готовилась, версии 1.1 программы просмотра Netscape еще не было; следовательно, я не мог использовать инструмент HTML-таблиц для отображения записей базы данных в виде аккуратно выровненных столбцов с фамилиями и другими реквизитами. Поэтому для выравнивания по столбцам пришлось использовать в этих программах на языке Access/Visual Basic пробелы и коды <PRE>, предписывающие программе просмотра подключение равноширенного шрифта.

Теперь, когда программа Netscape, версия 1.1, стала доступна, для форматирования данных по столбцам можно в полной мере пользоваться преимуществами табличных HTML-кодов, что значительно проще и дает больший эффект - благодаря лучшей наглядности при использовании обычного пропорционального шрифта.

На лист. 4 показаны исходные тексты нескольких универсальных подпрограмм на языке Access/Visual Basic, предназначенных для генерирования текстов HTML-документов с таблицами.

Тем, кто хочет попробовать свои силы в этой области, я предлагаю обратиться к службе PC MagNet ~tfp-сервер pcmag.ziff.com), переписать файл HTMTAB.ZIP и извлечь из него базу данных Access, содержащую исходный текст для генерирования HTML-документов и несложный пример из нескольких записей.


Лист. 4. Эти универсальные подпрограммы на языке Access/Visual Basic могут быть использованы дл генерирования текстов HTML-документов с таблицами.
Sub EmitHTMLTableHeader (FileNum As Integer, BorderWidth As Integer, CellPadding As Integer) ' Функция генерирования кода инициализации HTML-таблицы. ' Первый входной параметр -- FileNum (номер файла). ' Второму входному параметру -- BorderWidth (толщина рамки) -- ' присваиваются значения: 0 -- без рамки; -1 -- толщина рамки принимаетс ' по умолчанию; любое положительное значение -- явное задание толщины ' рамки. Третьему входному парметру -- CellPadding (отступ в ячейке) -- ' присваиваются значения: 0 -- принимается по умолчанию; любое ' положительное значение -- явное задание размера отступа. Dim S1 As String ' Формирование начала подстроки для управляющего кода TABLE S1 = "<TABLE " ' Если задано использование рамки -- добавить параметр BORDER If BorderWidth <> 0 Then S1 = S1 & "BORDER " End If ' Если толщина рамки не задается по умолчанию -- добавить ' параметр CELLSPACING If BorderWidth > 0 Then S1 = S1 & "CELLSPACING=" & Chr$(34) & LTrim$(Str$(BorderWidth)) & Chr$(34) End If ' Если размер отступа не задается по умолчанию -- добавить ' параметр CELLPADDING If CellPadding > 0 Then S1 = S1 & "CELL.PADDING=" & chr$(34) & LTrim$(Str$(CellPadding)) & Chr$(34) End If ' Завершение формирования подстроки кода TABLE и запись его в файл на диске S1 = S1 & ">" Print #FileNum, S1 End Sub Sub EmitHTMLTableRow (FileNum As Integer, ColumnCount As Integer, ColumnData() As String) ' Функция формирования HTML-кодов, описывающих отдельную строку ' в HTML-таблице. Входные параметры: номер файла, массив строк ' и число элементов в строке. Dim X As Integer ' Формирование HTML-кода начала строки таблицы Print #FileNum, "<TR> "; ' Цикл формирования и записи в файл HTML-кодов и строковых данных ' для каждой отдельной ячейки For X = 1 To ColumnCount Print #FileNum, "<TD>"; Print #FileNum, ColumnData(X); Print #FileNum, "</TD> "; Next X ' Формирование HTML-кода конца строки таблицы Print #FileNum, "</TR>" End Sub Sub EmitHTMLTableTrailer (FileNum As Integer) ' Функция формирования завершающего кода таблицы (/TABLE) и запись его ' в указанный файл Print #FileNum, "</TABLE>" End Sub