Как переделать файл эксель в html. Конвертирование HTML в форматы Microsoft Excel. Возможности Excel, которые не поддерживаются на веб-страницах

Жаропонижающие средства для детей назначаются педиатром. Но бывают ситуации неотложной помощи при лихорадке, когда ребенку нужно дать лекарство немедленно. Тогда родители берут на себя ответственность и применяют жаропонижающие препараты. Что разрешено давать детям грудного возраста? Чем можно сбить температуру у детей постарше? Какие лекарства самые безопасные?

Потребность преобразовать таблицу с расширением HTML в форматы Excel может наступить в различных случаях. Возможно, нужно конвертировать данные веб-страницы из интернета или файлы HTML, использовавшиеся локально для других нужд специальными программами. Довольно часто производят конвертацию транзитом. То есть, сначала переводят таблицу из HTML в XLS или XLSX, потом выполняют её обработку или редактирование, а потом снова преобразуют в файл с прежним расширением для выполнения его первоначальной функции. Это связано с тем, что с таблицами намного проще работать именно в Excel. Давайте узнаем, как можно перевести таблицу из формата HTML в Эксель.

Формат HTML является языком гипертекстовой разметки. Объекты с данным расширением чаще всего применяются в интернете, как статические веб-страницы. Но нередко они могут использоваться и для локальных нужд, например, как документы справки к различным программам.

Если возникает вопрос конвертации данных из HTML в форматы Excel, а именно XLS, XLSX, XLSB или XLSM, то неопытный пользователь может взяться за голову. Но на самом деле ничего страшного тут нет. Конвертация в современных версиях Excel встроенными инструментами программы выполняется довольно просто и в большинстве случаев относительно корректно. Кроме того, можно сказать, что сам процесс интуитивно понятен. Тем не менее, в сложных случаях можно воспользоваться для конвертации сторонними утилитами. Давайте рассмотрим различные варианты преобразования HTML в Excel.

Способ 1: использование сторонних программ

Сразу давайте остановимся на использовании сторонних программ для перевода файлов из формата HTML в Эксель. Преимущества данного варианта заключаются в том, что специализированные утилиты способны справляться с конвертированием даже очень сложных объектов. Недостаток заключается, в том, что подавляющее большинство из них платное. Кроме того, на данный момент практически все достойные варианты англоязычные без русификации. Давайте рассмотрим алгоритм работы в одной из самых удобных программ для выполнения вышеуказанного направления конвертации — Abex HTML to Excel Converter.

  1. После того, как был скачан инсталлятор программы Abex HTML to Excel Converter, запускаем его, выполнив по нему двойной щелчок левой кнопкой мыши. Открывается приветственное окно установщика. Щелкаем по кнопке «Next» («Далее» ).
  2. Вслед за этим открывается окно с лицензионным соглашением. Для того, чтобы согласится с ним, следует поставить переключатель в позицию «I accept the agreement» и щелкнуть по кнопке «Next» .
  3. После этого открывается окно, в котором указывается, куда именно будет устанавливаться программа. Конечно, при желании можно изменить директорию, но без особой нужды делать это не рекомендуется. Так что просто жмем на кнопку «Next» .
  4. В следующем окне указывается, каковым будет название программы, отображаемое в стартовом меню. Тут тоже можно просто нажать на кнопку «Next».
  5. В следующем окне предлагается путем выставления галочек установить иконку утилиты на рабочий стол (по умолчанию включено) и на панель быстрого запуска. Выставляем данные настройки согласно своим предпочтениям и жмем на кнопку «Next» .
  6. После этого запускается окно, где обобщена вся информация о всех тех настройках установки программы, которые пользователь внес ранее. Если пользователя что-то не удовлетворяет, то он может нажать на кнопку «Back» и произвести соответствующее редактирование настроек. Если же он со всем согласен, то для начала установки следует нажать на кнопку «Install» .
  7. Происходит процедура установки утилиты.
  8. После её завершения запускается окно, в котором сообщается об этом. Если пользователь хочет тут же запустить программу автоматически, то он должен проследить, чтобы около параметра «Launch Abex HTML to Excel Converter» была установлена галочка. В обратном случае нужно снять её. Для выхода из окна установки следует нажать на кнопку «Finish» .
  9. Важно знать, что перед запуском утилиты Launch Abex HTML to Excel Converter, как бы он не проводился, вручную или сразу после установки приложения, следует завершить работу и закрыть все программы пакета Microsoft Office. Если вы этого не сделаете, то при попытке открыть Abex HTML to Excel Converter откроется окошко, в котором будет сообщаться, о необходимости выполнить данную процедуру. Чтобы перейти к работе с утилитой, нужно нажать в этом окне на кнопку «Yes» . Если при этом офисные документы открыты, то работа в них принудительно будет завершена, а все несохраненные данные потеряны.
  10. Затем будет запущено окно регистрации. Если вы приобрели регистрационный ключ, то в соответствующих полях требуется ввести его номер и ваше имя (можно псевдоним), а после этого нажать на кнопку «Register» . Если вы пока ключ не приобрели и хотите испытать урезанную версию приложения, то в этом случае просто нажмите на кнопку «Remind me later» .
  11. После выполнения вышеуказанных действий запускается непосредственно окно программы Abex HTML to Excel Converter. Для добавления файла в формате HTML для конвертации следует нажать на кнопку «Add Files» .
  12. После этого открывается окно добавления файла. В нем нужно перейти в категорию, где находятся объекты, предназначенные для конвертации. Затем нужно их выделить Преимущество данного способа перед стандартным преобразованием HTML в Excel заключается в том, что можно выбирать и конвертировать сразу несколько объектов. После того, как файлы выделены, жмем на кнопку «Открыть» .
  13. Выбранные объекты будут отображены в основном окне утилиты. После этого кликаем по левому нижнему полю, чтобы выбрать один из трех форматов Excel, в которые можно преобразовать файл:
    • XLS (по умолчанию);
    • XLSX;
    • XLSM (с поддержкой макросов).

    Делаем выбор.

  14. После этого переходим к блоку настроек «Output setting» («Настройка вывода» ). Тут следует указать, где именно будут сохраняться преобразованные объекты. Если выставить переключатель в позицию «Save target file(s) in source folder» , то таблица будет сохраняться в той же директории, где расположен исходник в формате HTML. Если же вы желаете сохранять файлы в отдельной папке, то для этого следует переставить переключатель в позицию «Customize» . При этом по умолчанию объекты будут сохраняться в папке «Output» , которая в свою очередь размещена в корневом каталоге диска C .

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

  15. После этого открывается окошко с обзором папок. Вам необходимо переместиться в ту директорию, которую хотите назначить местом сохранения. Затем следует нажать на кнопку «OK» .
  16. После этого можно приступить непосредственно к процедуре конвертации. Для этого на верхней панели следует нажать на кнопку «Convert» .
  17. Затем будет выполнена процедура преобразования. После её завершения откроется небольшое окошко, в котором сообщается об этом, а также автоматически запустится Проводник Windows в той директории, где расположены конвертированные файлы в формате Excel. Теперь с ними можно проводить любые дальнейшие манипуляции.

Но нужно учесть, что если вы используете бесплатную пробную версию утилиты, то будет выполнена конвертация только части документа.

Способ 2: преобразование с помощью стандартных инструментов Excel

Также конвертировать файл HTML в любой формат Excel можно довольно легко и при помощи стандартных инструментов данного приложения.


Также существует другая возможность перейти в окно сохранения документа.


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

Вконтакте

Одноклассники

АЛЕКСЕЙ МИЧУРИН

Конвертирование из Excel в HTML:

корректно, качественно, просто

Итак, наша задача состоит в том, чтобы корректно конвертировать документ из формата xls в формат HTML с учётом форматирования исходного документа и при этом обойтись «малой кровью»

Постановка задачи. Или в чем проблема?

Многие веб-мастера часто сталкиваются с задачей конвертирования файлов Microsoft Excel в другие форматы. Нередко это сопряжено с трудностями, так как формат xls, как все прекрасно знают, не документирован.

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

За примером далеко ходить не надо. Множество фирм, которые имеют свои веб-страницы и периодически их обновляют, ведут свои дела с использованием Excel. Перед веб-мастером при каждом обновлении информации на сервере возникает задача конвертирования. Причём задача может осложняться следующими аспектами:

Во-первых, это изменение дизайна. Price-list, подготовленный в Excel, обычно рассчитан на распечатку на чёрно-белом принтере. Price-list на веб-сайте – нет. Хотя бы поэтому простое «Сохранить как веб-страницу» не подходит (я уж молчу о том, какого качества получается HTML-код при таком сохранении).

Во-вторых, при конвертировании необходимо учесть специфику Excel. Например, очень многие люди, редактирующие price-list, широко применяют команду «Формат/строка/скрыть». При этом высота строки становится нулевой, и строка как бы исчезает с экрана и на печати. Понятно, что и на веб-сайт такие строки попасть не должны. Однако они превосходно сохраняются в других форматах и ничем не отличаются от обычных, не скрытых, строк. Это приводит к тому, что доктрина «Сохранить как текст с разделителями и обработать» не даёт удовлетворительных результатов.

В-третьих, в price-list часто используется форматирование, сохранение которого критично. Например, наименования некоторых товаров могут быть зачёркнуты или выделены цветом в знак того, что эти товары были и обязательно будут, но сейчас их нет. Некоторые позиции могут быть выделены курсивом и так далее. Вся эта информация бесследно исчезает, если пересохранить price-list в простом формате, скажем, как текст с разделителями табуляции.

Итак, наша задача состоит в том, чтобы корректно конвертировать документ из формата xls в формат HTML с учётом форматирования исходного документа и при этом обойтись «малой кровью».

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

Первую задачу (экспорт) я предлагаю решить средствами Excel. Тут у нас фактически нет выбора, формат xls может обработать только то единственное на свете приложение, которое его понимает. Это диалектика.

Вторую задачу я предлагаю решить средствами языка Perl. Почему? Потому, что этот язык ориентирован на работу со строками и на решение задач, подобных нашей (Perl – Practical Extraction and Report Language – то, что надо). Потому, что этот язык знает достаточно много программистов, связанных с веб-разработками (если вы не относитесь к их числу и планируете заниматься web, то искренне рекомендую обратить внимание на Perl). Потому, что этот язык бесплатен и доступен любому пользователю на любой платформе. И потому, что мой код на Perl можно будет потом легко модифицировать, заставив его, допустим, помещать каждый раздел price-list в отдельный файл, различным образом сортировать позиции прайса, отслеживать обновления и динамику цен, снабжать каждую позицию полями HTML-форм для on-line заказа в веб-магазине... В конце концов, мой скрипт легко превратить в CGI-приложение для администрирования веб-сервера.

Такое решение представляется мне максимально гибким, функциональным и компактным, потому что каждая часть задачи решается тем средством, которое наиболее приспособлено для её решения.

Давайте оттолкнёмся от конкретного примера. В качестве «подопытного кролика» предлагаю следующий прайс (см. рис. 1).

Как видите, он сочетает в себе все неприятные элементы, упомянутые выше: и форматирование (фон, перечёркивания, жирный шрифт), и скрытые строки (если приглядеться, то можно заметить, что после девятой сразу идёт двенадцатая строка). Давайте им займёмся.

Экспорт данных из Excel

Приступим к решению первой задачи. Для экспорта данных из Excel я предлагаю несложный макрос на Visual Basic (номера строк приведены только для удобства комментирования):

1: Sub table2table()

2: "

3: " макрос, сохраняющий выделенный фрагмент таблицы

4: " в текстовом формате с отметками о форматировании

5: "

6: With ActiveWindow.RangeSelection

7: c1 = .Columns.Column

8: c2 = .Columns.Count - 1 + c1

9: r1 = .Rows.Row

10: r2 = .Rows.Count - 1 + r1

11: End With

12: If (r1 - r2 = 0 And c1 - c2 = 0) Then

13: MsgBox _

14: "что-то мало выделено (для сохранения) ,-)", _

15: vbCritical, "сообщение макроса"

16: End If

17: fileSaveName = Application.GetSaveAsFilename(_

18: InitialFileName:="file", _

19: fileFilter:="Text Files (*.txt), *.txt", _

20: Title:="сохранение страницы в нашем формате")

21: If fileSaveName = False Then

22: MsgBox _

23: "файл-то не выбран. никаких действий не предпринято.", _

24: vbCritical, "сообщение макроса"

25: Else

28: Open fileSaveName For Output As #1

29: For r = r1 To r2

30: l = CStr(Rows(r).RowHeight)

31: For c = c1 To c2

32: With Cells(r, c)

33: l = l + sep + CStr(.Text) + _

37: End With

38: Next

39: Print #1, l

40: Next

41: Close #1

42: End If

43: End Sub

Этот макрос сохраняет выделенную часть прайса в заданный файл. Макрос можно добавить к рабочей версии прайса и сделать для его вызова кнопку (вне области печати), а можно хранить в отдельном файле. Поместить его в документ очень просто: вызовите редактор Visual Basic (меню: «Сервис –> Макрос –> Редактор Visual Basic»; или ), создайте новый модуль (меню: «Вставить –> Модуль») и введите приведённый здесь текст (без номеров строк). Теперь можно нарисовать кнопку (инструмент на панели «Формы») и назначить ей макрос.

Давайте вкратце рассмотрим, как работает этот код.

Первая строка – объявление макроса. Как видите, я назвал его незамысловато table2table, вы можете наречь его более звучно.

В строках с 6 по 11 мы определяем границы выделенной части документа (ведь мы будем сохранять только выделенную часть). Теперь c1 и c2 – номера первого и последнего столбца, а r1 и r2 – первой и последней строки выделенной области.

Далее, в строках с 12 по 16 проверяем, а была ли выделена область или нашему макросу предстоит работать только с одной ячейкой. Этого, конечно, можно и не делать, но ведь, скорее всего, запускать этот макрос будете не вы, а менеджеры, редактирующие прайс, на их аккуратность не всегда можно рассчитывать. Итак, если ничего не было выделено, то наш макрос выдаст предупреждение (см. рис. 2).

В строках с 17 по 20 мы вызываем диалог Application.GetSaveAsFilename, чтобы пользователь мог выбрать имя файла (см. рис. 3).

Опять же вы можете просто задать фиксированное имя, но мне кажется, что это неудобно даже в том случае, если вы сами эксплуатируете этот макрос.

В строках с 21 по 42 следует конструкция if-then-else с проверкой, было ли указано имя файла для сохранения или пользователь нажал кнопку «Отмена» диалога «Сохранить как...».

Если пользователь отказался от сохранения, то выдаётся соответствующее сообщение (строки с 22 по 24), если имя файла указано, то начинается самое интересное – сохранение данных.

Но прежде чем обсудить процедуру сохранения (строки с 26 по 41), давайте скажем пару слов о том, в каком же именно формате мы намерены сохранять данные. Предлагаю самый простой для обработки формат: ASCII-текст. Каждая строка соответствует строке сохраняемой таблицы. Поля разделены одно символьными разделителями. Первое поле – высота строки (эта информация необходима, чтобы отфильтровать «скрытые» строки). Все последующие поля – содержимое ячеек, но каждое из этих полей содержит несколько подполей, разделённых своими разделителями. Подполя несут различную информацию о ячейке: содержание, параметры форматирования.

У нас разделители полей и подполей задаются ASCII-кодами в строках 26 и 27 соответственно. Вы можете выбрать более удобные разделители. Например, если вы уверены, что в ваших данных никогда не встречается символ «:», то можно взять его в качестве разделителя или подразделителя.

Организуем цикл по строкам (строка 29).

Для каждой строки вычисляем высоту. Заодно начинаем готовить строку для сохранения в файл в переменной l (строка 30 листинга).

В цикле (строка листинга 31) по ячейкам сохраняемой строки таблицы добавляем к строке l всю интересующую нас информацию о ячейках, снабжая её разделителями.

Какие свойства ячейки мы сохраняем?

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

Свойство.MergeCells говорит о том, является ли ячейка частью группы объединённых ячеек.

Свойство.Font.Bold отражает жирность текста в ячейке.

Свойство.Font.Strikethrough говорит о том, был ли текст оформлен как зачёркнутый.

Для нашего примера нам, пожалуй, больше ничего не потребуется. Однако не могу не отметить ряд полезных свойств, которые могут вам пригодиться. Имена этих свойств достаточно красноречивы, и я не буду их комментировать, ограничусь перечислением:

  • .Font.Name
  • .Font.FontStyle
  • .Font.Size
  • .Font.Underline
  • .Font.ColorIndex
  • .Font.Italic
  • .HorizontalAlignment
  • .VerticalAlignment
  • .ColorIndex
  • .Pattern

Обратите внимание, все свойства явно приводятся к строчному типу функцией CStr (строки с 33 по 36). Это весьма полезная процедура, навсегда избавляющая вас от головной боли о преобразованиях типов.

Здесь следует сделать важную оговорку. Дело в том, что функция CStr не в состоянии обработать неопределённые значения. Если таковые будут встречаться в ваших документах, то вместо CStr вы можете использовать собственную функцию преобразования величин в текстовый формат. Например, safeCStr:

1: Function safeCStr(p As Variant) As String
2: If IsNull(p) Then safeCStr = "" Else safeCStr = CStr(p)
3: End Function

Должен отметить, что сам я никогда не сталкивался с такими ситуациями, но научно-технический консультант журнала без труда нашёл в Интернете прайс-лист, в некоторых ячейках которого свойство.Font.Bold было не определено. Я полагаю, что такие документы могут возникать в результате экспорта данных из других приложений. Например, продукты «1C» допускают экспорт данных в Excel. Одним словом, такая ситуация возможна. – Примечание автора .

Итак, вы выделяете сохраняемую область (в нашем примере это первые три столбца таблицы, строки с 4 по 21), нажимаете созданную вами кнопку, выбираете имя файла, и файл сохранён. Что с ним делать дальше?

Создание HTML-страницы по экспортированным данным

С этим файлом можно сделать всё что угодно, потому что его формат нам полностью известен (приятно это осознавать). Я приведу пример генерации HTML-страницы.

Как я и говорил, предлагаю скрипт на Perl:

1: #!/usr/bin/perl -w

3: #use strict;

5: # my ($TRUE, $FALSE)=("Истина", "Ложь");

6: my ($TRUE, $FALSE)=("True", "False");

8: sub qtnum {

9: my $t=shift;

10: $t=~s|,(\d+)|,$1|;

11: return $t;

12: }

14: sub qtstring {

15: my $t=shift;

16: $t=~s/\&/\&/g;

17: $t=~s/\"/\"/g;

18: $t=~s/\>/\>/g;

19: $t=~s/\

20: return $t;

21: }

23: print <<"TEXT";

24:

25:

26: прайс некой фирмы

27:

32:

33:

34:

35:

36:

37:

38:

39:

40:

41:

42:

43:

44:

45:

46:

47:

48:

49:

50: TEXT

52: while (<>) {

53: s/[\x0A\x0D]+$//;

54: my @f=split /\x09/;

55: my $lh=shift @f;

56: my ($name, $usd, $rub)=map {} @f;

57: if ($lh) {

58: if ($name-> eq $TRUE) { # обработка заголовка раздела

59: print "

\n";

62: } else { # обработка обычной строки

63: print <<"TEXT" .

64:

65: onMouseOver="this.className="al";"

66: onMouseOut="this.className = "";">

\n\n\n";

80: }

81: print <<"TEXT";

82:

83:

84: TEXT

85: } else {

86: warn "hidden line: ".$name->."\n";

87: }

88: }

90: print <<"TEXT";

91:

прайс некой фирмы
наименование товара цена
у.е. руб.
" .

60: $name-> .

61: "

67: TEXT

68: ($name-> eq $TRUE?"":"") .

69: qtstring($name->) .

70: ($name-> eq $TRUE?"":"") .

71: qq|

| .

72: ($usd-> eq 

$TRUE?"":"") .

73: qtnum($usd->) .

74: ($usd-> eq $TRUE?"":"") .

75: qq|

| .

76: ($rub-> eq 

$TRUE?"":"") .

77: qtnum($rub->) .

78: ($rub-> eq $TRUE?"":"") .

79: "

92:

93:

94: TEXT

Скрипт принимает входные данные из файла, указанного как параметр командной строки, или со стандартного ввода и выдаёт HTML-код на стандартный выход. То есть запускать его можно так:

perl file2html.pl file.txt >file.html

или, например, так:

cat file.txt | perl file2html.pl >file.html

Разберёмся, как работает этот скрипт (я буду предполагать, что читатель немного знаком с Perl).

Первая строка – стандартная магическая строка любого UNIX-сценария. Пользователи Windows могут её проигнорировать. В третьей строке – закомментированная инструкция use strict. Она будет полезна вам только при отладке.

В строках 5 и 6 мы определим переменные $TRUE и $FALSE, которые будут содержать значения истины и лжи, выдаваемые Excel. Дело в том, что русский Excel использует русские слова, европейский – английские. Откомментируйте подходящую вам строку и закомментируйте лишнюю.

Процедура qtnum (с 8 по 12 строки) добавляет к записи числа теги, превращая «3,14» в «3,14». То есть центы и копейки будут отображаться меньшим шрифтом. Это чисто косметическая мера.

Процедура qtstring (строки с 13 по 21) квотирует «небезопасные» символы: & (and), “ (двойная кавычка), < (больше), > (меньше). Это, как вы понимаете, обязательная мера.

В строках с 23 по 50 печатается «шапка» HTML-документа.

В цикле while (строки с 52 по 88) мы считываем построчно входной файл, преобразуем его в HTML-документ и выдаём в стандартный поток вывода stdout.

В строке 53 от очередной считанной строки отрезается символ(ы) конца строки. Я не использую стандартные функции Perl chop и chomp, потому что обрабатываемый файл создаётся под Windows, а обработчик (наш сценарий на Perl) может работать и под UNIX. Файл же может передаваться весьма экзотическими путями. Например, наверняка многие захотят чуть доработать мой код и превратить его в CGI-приложение для администрирования их родного сервера. Поэтому я не полагаюсь на стандартные функции, а прописываю явно, что мне необходимо удалить все символы \x0A и \x0D в конце строки.

Первое поле – высота строки – сохраняется в переменной $lh (строка 55). Все остальные поля разделяются на под-поля. В результате переменным $name, $usd, $rub присваиваются указатели на массивы, содержащие всю необходимую информацию о содержимом и форматировании соответствующей ячейки. $name – ячейка с наименованием товара, $usd – ячейка с ценой в долларах, $rub – ячейка с ценой в рублях. Делается это одной-единственной строкой 56.

Если высота строки не равна нулю, то выполняем блок с 58 по 84 строки. В противном случае выдаём предупреждение в стандартный поток ошибок stderr о том, что обнаружена и проигнорирована скрытая строка (строка 86).

Обработка строк таблицы только на первый взгляд может показаться сложной.

Прежде всего мы выясняем, с чем мы имеем дело: в строке 58 проверяем истинность свойства.MergeCells ячейки с наименованием товара. Если эта ячейка объединена, то это заголовок раздела, тогда выполняется код генерирующий заголовок (строки с 59 по 61).

Если оказывается, что мы имеем дело с обычной строкой, то выполняется блок else (строки с 63 по 79). Здесь формируется строка HTML-таблицы, в которую вставляются дополнительные элементы форматирования (для тех строк таблицы, где это необходимо).

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

В строках 90–94 выводим завершающие теги документа. Обратите внимание, что в конце файла с программой обязательно должна быть пустая строка. Иначе последнее слово («TEXT») (строка 94) не будет правильно обработано интерпретатором Perl.

То что получается на выходе, смотрите на рисунке (стр. 82).

Согласитесь, было за что биться!

BUGS. Что ещё можно добавить?

Я не сомневаюсь, что хотя мои примеры полностью работоспособны, мало кто будет использовать их без малейших модификаций. Хочу подбросить пару мыслей о том, что можно улучшить в этих скриптах, чтобы при их модификации вы не делали лишней работы, а убивали сразу как можно больше зайцев.

По сценарию на Visual Basic

Здесь вам скорее всего придётся изменить набор сохраняемых параметров ячейки. Список наиболее полезных я привожу в обсуждении этого сценария. Если вам понадобится какая-нибудь экзотика, обращайтесь к документации Microsoft, свойства объекта Range.

Наверное, многие сочтут недоработкой то, что макрос безусловно заменяет существующие файлы (если вы укажите для сохранения существующий файл). Это, как вы понимаете, легко исправить.

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

Наконец, читатель может справедливо спросить, зачем макрос для Excel сохраняет скрытые строки, ведь их можно отсеять уже на стадии экспорта? Снимаю шляпу перед внимательностью читателя (втайне надеясь на ответный жест в адрес моей проницательности). Сохранять скрытые строки действительно совсем не обязательно, просто я привык сохранять всё. Причины? Возможно, скрытые строки всё-таки понадобятся. Или вы захотите точно знать, какие строки были проигнорированы (мой Perl-сценарий, как вы помните, сообщает о каждой скрытой строке). Кроме того, информация о высоте строк может быть критерием для идентификации заголовков... Хотя, конечно, вы можете слегка модифицировать VB-код и не сохранять скрытые строки.

По скрипту на Perl

Конечно, весь HTML-код (а это большая часть скрипта) вы скорее всего значительно измените. Конечно, вам придётся изменить количество столбцов, шапку, многие удалят из HTML-кода мои пустые строчки-разделители, накрутят вложенных таблиц, изменят DHTML-функции, добавят CSS-таблицы... Но это не самое главное и не принципиальное изменение.

Скорее всего вам придётся «научить» этот сценарий разбивать большие документы на разделы и сохранять эти разделы в разных файлах, потому что прайс-лист весьма средней фирмы в формате HTML может потянуть на сотни килобайт. Не всякий веб-странник дождётся конца загрузки такого документа. Возможно, вы захотите добавить сортировку (если позиции в печатном прайс-листе и в веб-прайсе должны следовать в разном порядке).

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

Я бы советовал организовать подобные процедуры (не относящиеся непосредственно к HTML-вёрстке) в виде отдельных программ или модулей. Кстати, часть работы по HTML-вёрстке можно доверить механизму SSI, а скрипт пусть собирает SHTML-документ. Набор простых инструментов всегда удобнее, гибче и управляемее, чем один универсальный. Держитесь подальше от грабель, по которым гуляют создатели телефона-микроволновки и телевизора-зубной щётки.

Список советов и предложений можно продолжать бесконечно, но я думаю, что уже разбудил вашу фантазию, и дальше вы справитесь и без меня. Адаптация приведённого здесь примера к вашим конкретным условиям, возможно, потребует несколько часов работы. Зато потом вы будете щедро вознаграждены, ведь все последующие обновления информации на вашем веб-сервере вы будете делать буквально в несколько касаний клавиатуры и мыши!


Вконтакте

Для примера возьмём Excel таблицу состоящую из 4 столбцов и 12 строк.
Столбец A - нумерация предметов по порядку возрастания пунктов-строк
Столбец B - количество предметов
Столбец C - цена одного предмета
Столбец D - сумма стоимости предметов одной строки как произведение цены предмета на их количество
Столбец D ячейка D12 - сумма стоимости всех предметов

Само собой разумеется что сама таблица в виде excel файла не может быть размещена в материалах сайта по множеству причин. Для её размещения, публикации в виде текстового представления данных требуется конвертация в HTML совместимый формат .

Сначала добавляем перед таблицей ещё одну строку , выделено красной рамкой .
Затем перед каждым столбцом таблицы добавляем ещё по одному столбцу , добавляем ещё 4 столбца, выделено зелёными рамками .

В итоге получим таблицу состоящую из 8 столбцов и 13 строк.

В ячейку A1 в виде текста записываем HTML тег таблицы


В ячейки диапазона A2-A11 перед каждой ячейкой столбца B в виде текста записываем открывающие HTML теги строки и ячейки
В ячейку I14 в виде текста записываем закрывающий HTML тег таблицы

В ячейки диапазонов С2-С11 , E2-E11 , G2-G11 перед каждой ячейкой столбцов D , F и H в виде текста записываем закрывающий и открывающий HTML теги ячеек

В ячейки диапазона I2-I13 после каждой ячейки столбца H в виде текста записываем закрывающие HTML теги ячейки и строки

Далее в ячейки A12 и A13 в виде текста записываем открывающий HTML тег строки и открывающий HTML тег ячейки с атрибутом colspan объединяющим в строках 12 и 13 столбцы B , D и F в одну ячейку

В результате получим таблицу заполненную как исходными данными в excel формате так и HTML тегами в виде текста.

Далее в Excel редакторе , выделяем таблицу в диапазоне A1-I13 , в меню программы выбираем команду "Сохранить как" и сохраняем выделенный фрагмент в виде текстового файла (например - tabltxt.txt), кодировка не имеет никакого значения, можно сохранять как в кодировке UTF-8 так и в кодировке Ms-DOS . Excel выдаст предупреждающее окно:

Нажимаем на клавишу "OK" и Excel опять выдаст окно предупреждения:

Нажимаем на клавишу "ДА" и выделенный фрагмент будет сохранён в виде текстового файла tabltxt.txt

Далее дальнейшую работу по конвертации переносим в HTML редактор , в принципе всё остальное так же можно сделать и в простом текстовом редакторе, но вариант с HTML редактором более предпочтителен .

Открываем файл tabltxt.txt в любом текстовом редакторе, выделяем всё содержимое как текст и вставляем в HTML редактор в режиме HTML . Получим следующий исходный HTML текст таблицы. Так же можно взять выделение сохранённого файла из Excel. Разница будет лишь в том что в зависимости от кодировки сохранённого файла в нём могут появиться "артефакты" в виде лишних символов как это можно увидеть на скриншоте в ячейках (" " ).

Далее удаляем все "артефакты" в случае их наличия и все пробелы. Так же пишем стиль CSS для ячеек таблицы: td {padding: 1px 12px; text-align: center;} В результате получим исходный HTML текст таблицы в формате HTML. (скриншот приведён как есть без структурного форматирования HTML как если бы он выглядел в текстовом редакторе) . В таком виде исходный текст таблицы пригоден для употребления в качестве HTML таблицы данных для публикации в материале, так как является чисто HTML форматом.

После сохранения таблицы в виде HTML файла и просмотре в Обозревателе получим следующее отображение таблицы конвертированной из excel формата в HTML формат.

Смысл всех вышеперечисленных действий сводится к однму:

1 . Сформировать перед каждой строкой таблицы excel, HTML строку и начало HTML ячейки.
2 . Сформировать между столбцами таблицы excel, конец одной и начало другой HTML ячейки.
3 . Сформировать после каждой строки таблицы excel, окончание HTML ячейки и строки.
4 . Сформировать в начале и в конце таблицы excel, начало и окончание HTML таблицы в виде тега table.

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

Иногда приходит менеджер и говорит: - Хочу эту таблицу видеть на сайте.
И уходит.
Вырисовывается два стандартных пути:
- либо через некую админку в редакторе ваять таблицу и заполнять ее значениями;
- либо ручками сразу в html и также наполнять значениями.
И ладно, если там 3х5 ячеек, а если больше.

Столкнувшись с подобным несколько лет назад я открыл для себя метод, базирующийся на использовании Windows Live Writer (софт написания и отправки постов в некоторые блоггерские платформы).

Все просто. Скопированную таблицу вставляем в WLW специальной вставкой с сохранением формата

Затем переходим на нижнюю вкладку «Source» в WLW и копируем из поля весь огромный код

Получается так или почти так, как в оригинале. Времени занимает секунды, если не считать одноразовых затрат на прикрепление WLW к какой-нибудь блого-учетке.
Пример тут codepen

В итоге получаем единую страницу с текстом на 320 строк.

Там еще надо найти необходимое для использования…

Поддержите проект — поделитесь ссылкой, спасибо!
Читайте также
Звуковая карта в качестве генератора Звуковая карта в качестве генератора Прослушивание звонков GSM стало доступно каждому? Прослушивание звонков GSM стало доступно каждому? О возврате товаров и гарантиях торговой площадки Amazon О возврате товаров и гарантиях торговой площадки Amazon