Книга: Excel. Трюки и эффекты
Преобразование таблицы Excel в HTML-формат
Разделы на этой странице:
Преобразование таблицы Excel в HTML-формат
В процессе работы иногда возникает необходимость в быстром преобразовании табличных данных Excel в HTML-код (например, для оперативного размещения на сайте самой свежей информации). Рассмотрим на конкретном примере, каким образом можно решить эту задачу.
Предположим, что нам необходимо преобразовать в HTML-код следующую таблицу (рис. 3.17).
Рис. 3.17. Таблица Excel
В данном случае следует воспользоваться макросом, код которого приведен в листинге 3.58.
Листинг 3.58. Преобразование таблицы в HTML-формат
Sub ExportAsHtml()
Dim strStyle As String ' Параметры стиля отображения
ячейки
Dim strAlign As String ' Параметры выравнивания ячейки
Dim strOut As String ' Выходная строка с HTML-кодом
Dim cell As Object ' Обрабатываемая ячейка
Dim strCellText As String ' Текст обрабатываемой ячейки
Dim lngRow As Long ' Номер строки обрабатываемой
ячейки
Dim lngLastRow As Long ' Номер строки предыдущей ячейки
Dim strTemp As String
Dim objWordApp As Object
Dim i As Long
lngLastRow = Selection.Row
' Просмотр всех выделенных ячеек
For Each cell In Selection
' Значение строки для рассматриваемой ячейки
lngRow = cell.Row
' Если перешли на другую строку, то вставляем <tr>
If lngRow <> lngLastRow Then
strOut = strOut & vbTab & «</tr>» & vbCrLf & vbTab & _
«<tr>» & vbCrLf
' Переход на следующую строку
lngLastRow = lngRow
End If
' Задание шрифта ячейки
If Not IsNull(cell.Font.Size) Then
strStyle = « & "font-size: " & Int(100 * _
cell.Font.Size / 19) & «%;»
End If
' Для полужирного шрифта вставляем <b>
If cell.Font.Bold Then
strCellText = «<b>» & strCellText & «</b>»
End If
' Задание выравнивания
If cell.HorizontalAlignment = xlRight Then
' По правому краю
strAlign = « align=» & «right»
ElseIf cell.HorizontalAlignment = xlCenter Then
' По центру
strAlign = « align=» & «center»
Else
' По левому краю (по умолчанию)
strAlign = ""
End If
' Чтение текста в ячейке
strCellText = cell.Text
' Если нужно, то вертикальный вывод текста (в строку strTemp _
с последующим перенесением обратно в strCellText)
If cell.Orientation <> xlHorizontal Then
strTemp = ""
' Печать после каждого символа специального _
разделителя – <br>
For i = 1 To Len(strCellText)
strTemp = strTemp & Mid$(strCellText, i, 1) & «<br>»
Next i
strCellText = strTemp
strStyle = ""
End If
strOut = strOut & vbTab & vbTab & «<td» & strStyle &
strAlign _
& «>» & strCellText & «</td>» & vbCrLf
Next
' Вставка <tr> для первой строки и </tr> – для последней
strOut = vbTab & "<tr>м & vbCrLf & strOut & vbTab & "</tr>м
& vbCrLf
' Вставка дескриптора <table>
strOut = «<table border=1 cellpadding=3 cellspacing=1>» &
vbCrLf & _
strOut & vbCrLf & «</table>»
' Запускаем Word и показываем в нем сформированный HTML-код
Set objWordApp = CreateObject(«Word.Application»)
objWordApp.documents.Add
objWordApp.Selection = strOut
objWordApp.Selection.Copy
objWordApp.Visible = True
Set objWordApp = Nothing
End Sub
При выполнении данного трюка не стоит забывать, что перед запуском макроса следует выделить диапазон ячеек, который предстоит конвертировать в HTML-код.
В результате применения макроса табличные данные, показанные на рис. 3.17, будут преобразованы в следующий HTML-код:
<table border=1 cellpadding=3 cellspacing=1>
<tr>
<td 52%;>77</td>
<td 52%;>345</td>
</tr>
<tr>
<td 52%; align=right>25</td>
<td 52%;>851</td>
</tr>
<tr>
<td 52%;>44</td>
<td 52%;>415</td>
</tr>
<tr>
<td 52%;>17</td>
<td 52%;>25</td>
</tr>
</table>
Читатель, хотя бы немного знакомый с веб-разработками, без труда узнает знакомый стиль HTML-файла. Этот код будет открыт в отдельном окне Microsoft Word, а также скопирован в буфер обмена.
Преобразовать выделенный диапазон в HTML-формат можно и другим способом. Его отличие от приведенного выше заключается в том, что результатом преобразования будет готовый НТМ-файл, сохраненный по указанному пути. Для реализации данного примера нужно воспользоваться макросом, код которого представлен в листинге 3.59.
Листинг 3.59. Экспорт данных в НТМ-файл
Sub ExportAsHtmlFile()
Dim strStyle As String ' Параметры стиля отображения
ячейки
Dim strAlign As String ' Параметры выравнивания ячейки
Dim strOut As String ' Выходная строка с HTML-кодом
Dim cell As Object ' Обрабатываемая ячейка
Dim strCellText As String ' Текст обрабатываемой ячейки
Dim lngRow As Long ' Номер строки обрабатываемой
ячейки
Dim lngLastRow As Long ' Номер строки предыдущей ячейки
Dim strTemp As String
Dim strFileName As String ' Имя файла для сохранения HTML-
кода
Dim i As Long
' Запрос у пользователя имени файла для сохранения
strFileName = Application.GetSaveAsFilename( _
InitialFileName:="Primer.htm", _
fileFilter:="HTML Files(*.htm), *.htm")
' Проверка, задал ли пользователь имя файла (если нет, _
то можно выходить)
If strFileName = "" Then Exit Sub
lngLastRow = Selection.Row
' Просмотр всех выделенных ячеек
For Each cell In Selection
' Значение строки для рассматриваемое ячейки
lngRow = cell.Row
' Если перешли на другую строку, то вставляем <tr>
If lngRow <> lngLastRow Then
strOut = strOut & vbTab & «</tr>» & vbCrLf & vbTab & _
«<tr>» & vbCrLf
' Переход на следующую сроку
lngLastRow = lngRow
End If
' Задание шрифта ячейки
If Not IsNull(cell.Font.Size) Then
strStyle = « & "font-size: " & Int(100 * _
cell.Font.Size / 19) & «%;»
End If
' Для полужирного шрифта вставляем <b>
If cell.Font.Bold Then
strCellText = «<b>» & strCellText & «</b>»
End If
' Задание выравнивания
If cell.HorizontalAlignment = xlRight Then
' По правому краю
strAlign = « align=» & «right»
ElseIf cell.HorizontalAlignment = xlCenter Then
' По центру
strAlign = « align=» & «center»
Else
' По левому краю (по умолчанию)
strAlign = ""
End If
' Чтение текста в ячейке
strCellText = cell.Text
' Если нужно, то вертикальный вывод текста (в строку strTemp _
с последующим перенесением обратно в strCellText)
If cell.Orientation <> xlHorizontal Then
strTemp = ""
' Печать после каждого символа специального _
разделителя – <br>
For i = 1 To Len(strCellText)
strTemp = strTemp & Mid$(strCellText, i, 1) & «<br>»
Next i
strCellText = strTemp
strStyle = ""
End If
strOut = strOut & vbTab & vbTab & «<td» & strStyle & _
strAlign & «>» & strCellText & «</td>» & vbCrLf
Next
' Вставка <tr> для первой строки и </tr> – для последней
strOut = vbTab & «<tr>» & vbCrLf & strOut & vbTab & «</tr>»
& vbCrLf
' Вставка дескриптора <table>
strOut = «<table border=1 cellpadding=3 cellspacing=1>» _
& vbCrLf & strOut & vbCrLf & «</table>»–
' Сохранение HTML-кода в файл
Open strFileName For Output As 1
Print #1, strOut
Close 1
' Вывод окна с информационным сообщением о результатах работы
MsgBox Selection.Count & " ячеек экспортировано в файл " & _
strFileName
End Sub
После написания кода будет создан макрос ExportAsHtmlFile, результатом работы которого будет сформированный файл Primer.htm (не стоит забывать, что перед выполнением макроса необходимо выделить диапазон, данные которого должны быть преобразованы в HTML-формат). Путь для сохранения по обычным правилам Windows указывается в окне, которое открывается на экране сразу после запуска макроса (в этом же окне можно изменить имя создаваемого файла, которое предлагается по умолчанию). По окончании преобразования на экране отобразится окно, в котором пользователю сообщается количество преобразованных ячеек и путь к созданному НТМ-файлу.
- Подсчет количества открытий файла
- Получение «закрытой» информации
- Произвольный текст в строке состояния
- Быстрое изменение заголовка окна
- Ввод данных с помощью диалогового окна
- Применение функции без ввода ее в ячейку
- Скрытие строк и столбцов от посторонних
- Быстрое выделение ячеек, расположенных через интервал
- Определение количества ячеек в диапазоне и суммы их значений
- Подсчет именованных объектов
- Быстрый поиск курсора
- Поиск начала и окончания диапазона, содержащего данные
- Трюки с примечаниями
- Дополнение панели инструментов
- Примеры создания панелей инструментов
- Формирование пользовательского меню
- Проверка наличия файла по указанному пути
- Автоматизация удаления файлов
- Перечень имен листов в виде гиперссылок
- Удаление пустых строк на рабочем листе
- Запись текущих данных в текстовый файл
- Экспорт и импорт данных
- Одновременное умножение всех данных диапазона
- Преобразование таблицы Excel в HTML-формат
- Поиск данных нештатными средствами
- Включение автофильтра с помощью макроса
- Трюки с форматированием
- Вывод информации о текущем документе
- Вывод результата расчетов в отдельном окне
- Вывод разрешения монитора
- Что открыто в данный момент?
- Создание бегущей строки
- Мигающая ячейка
- Вращающиеся автофигуры
- Вызов таблицы цветов
- Создание калькулятора
- Еще о создании пользовательских меню
- Склонение фамилии, имени и отчества
- Получение информации об используемом принтере
- Вывод текущей даты и времени
- Автоматическое создание документов Word на основе табличных данных Excel
- Создание списка панелей инструментов и контекстных меню
- Создание списка пунктов главного меню Excel
- Создание списка пунктов контекстных меню
- Отображение панели инструментов при определенном условии
- Скрытие и отображение панелей инструментов
- Создание меню на основе данных рабочего листа
- Создание контекстного меню
- Просмотр содержимого папки
- Получение информации о состоянии дисков
- Расчет среднего арифметического
- Вывод списка доступных шрифтов
- Создание раскрывающегося списка
- Добавление команды на вкладку
- Преобразование XML в реляционную базу данных
- Форматы лид-магнитов
- 1.1. Информатика. Предмет информатики. Основные задачи информатики
- Определение пользовательского формата числовых данных
- Преобразование строки в целое: stoi( )
- 6.4. Рабочий лист Excel и его структурные элементы
- Использование представления в виде таблицы данных
- Информатика: аппаратные средства персонального компьютера
- 4.3. Логические функции и таблицы истинности
- Выбор правильного формата для вашего видео на YouTube
- Как в документ Microsoft Word вставить текст, в котором отсутствует форматирование?
- Трюки с форматированием