Перекласти з html в excel. Конвертування з 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 у формати 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. У цій статті ми розглянемо кілька способів конвертувати дані з Excel у HTML, визначимо плюси та мінуси кожного способу та виконаємо разом із Вами таке перетворення поетапно.

Перетворюємо таблиці Excel на HTML за допомогою інструмента «Зберегти як веб-сторінку»

Припустимо, Ви створили багатофункціональний звіт в Excel і тепер хочете експортувати всю цю інформацію разом із діаграмою та зведеною таблицею на сайт компанії, щоб колеги могли бачити їх у режимі онлайн через веб-браузери, не запускаючи Excel.

Щоб перетворити дані Excel на HTML, виконайте такі кроки. Ці інструкції підходять для Excel 2013, 2010 та 2007.


Порада:Якщо ви вперше перетворите робочу книгу Excel на файл HTML, то буде розумно спочатку зберегти веб-сторінку на жорсткий диск, щоб за необхідності можна було внести редагування перед публікацією сторінки в інтернеті або в локальній мережі.

Зауваження:Код HTML, створений Excel, дуже чистий! Буде чудово, коли, перетворивши велику таблицю зі складним дизайном, Ви відкриєте її в будь-якому редакторі HTML та почистите код перед публікацією. В результаті сторінка на сайті завантажуватиметься помітно швидше.

5 речей, про які потрібно пам'ятати, перетворюючи файли Excel на HTML

Використовуючи інструмент «Зберегти як Веб-сторінку», важливо розуміти, як працюють його головні параметри, щоб не зробити найбільш типові помилки і уникнути найпоширеніших повідомлень про помилку. У цьому розділі Ви знайдете короткий огляд тих параметрів, яким потрібно приділяти особливу увагу під час перетворення файлів Excel на HTML.

1. Допоміжні файли та гіперпосилання

Як відомо, веб-сторінки часто містять малюнки та інші допоміжні файли, а також гіперпосилання на інші веб-сайти. Перетворюючи файл Excel на веб-сторінку, програма автоматично збирає для Вас пов'язані файли та гіперпосилання та зберігає їх у допоміжну папку.

Коли Ви зберігаєте допоміжні файли, такі як діаграми та фонові текстури, на той же веб-сервер, Excel усі посилання створює відносними. Відносне посилання (URL) вказує на файл усередині того самого веб-сайту; вона вказує ім'я файлу або кореневу папку замість повного імені сайту (наприклад, href=”/images/001.png”). Коли ви видаляєте будь-який елемент, збережений як відносне посилання, Microsoft Excel автоматично видаляє пов'язаний файл із допоміжної папки.

Отже, головне правило – завжди зберігайте веб-сторінку та допоміжні файли в одному місці, інакше веб-сторінка не відображатиметься правильно. Якщо Ви переміщуєте або копіюєте веб-сторінку в інше місце, переконайтеся, що допоміжна папка скопійована в те саме місце, інакше посилання будуть неправильними. Якщо ви повторно зберігаєте веб-сторінку в інше місце, Microsoft Excel автоматично скопіює допоміжну папку.

Якщо Ви зберігаєте веб-сторінки в різні місця або якщо Excel містить гіперпосилання на зовнішні веб-сайти, то в таких випадках створюються абсолютніпосилання. Абсолютні посилання містять повний шлях до файлу або веб-сторінки, який може бути доступний звідки завгодно, наприклад: www.ваш-домен/розділ/сторінка.htm.

2. Внесення змін та перезбереження веб-сторінки

Теоретично, Ви можете зберегти книгу Excel як веб-сторінку, потім відкрити веб-сторінку в Excel, що вийшла, внести зміни і перезберегти файл. Однак у цьому випадку деякі можливості Excel не будуть доступні. Наприклад, будь-які діаграми, що містяться у Вашій робочій книзі, перетворяться на самостійні малюнки, і Ви не зможете змінювати їх в Excel, як це робили раніше.

Тому найкращим способом буде спочатку оновити вихідну книгу Excel, внісши певні зміни, потім зберегти її як робочу книгу Excel (.xlsx), і лише після цього знову перетворити її на веб-сторінку.

3. Автоперевидання веб-сторінки

Якщо Ви поставили галочку напроти параметра AutoRepublish(Автоперевидання) у діалоговому вікні Publish As Web Page(Публікація веб-сторінки), яку ми згадували раніше в цій статті, тоді Ваша веб-сторінка автоматично оновлюватиметься кожного разу, при збереженні робочої книги. Ця функція дуже корисна і дозволяє завжди підтримувати актуальну онлайн-копію Вашої таблиці Excel.

Якщо увімкнути параметр AutoRepublish(Автоперевидання), то кожного разу при збереженні робочої книги з'являтиметься повідомлення з проханням підтвердити, чи хочете Ви увімкнути або вимкнути автоперевидання. Якщо необхідно, щоб лист Excel автоматично опубліковувався, тоді вибираємо Enable…(Включити…) і тиснемо ОК.

Однак, можуть виникнути обставини, коли Ви не захочете автоматично публікувати лист Excel або його елементи, наприклад, якщо файл містить конфіденційну інформацію або був змінений тим, хто не є довіреною особою. У такому разі Ви можете тимчасово або назавжди відключити автоперевидання.

Щоб тимчасово вимкнути автоперевидання, виберіть перший із запропонованих варіантів у вищезгаданому повідомленні – Disable the AutoRepublish feature while this workbook is open(Вимкнути Автоперевидання, коли відкрито цю книгу). Таким чином буде відключено автоматичну публікацію для поточної сесії Excel, але наступного разу, коли Ви відкриєте книгу, вона буде знову включена.

Щоб відключити автоперевидання назавжди для всіх вибраних елементів, відкрийте книгу Excel, перейдіть у діалогове вікно Publish As Web Page(Публікація веб-сторінки) та натисніть кнопку Publish(Опублікувати). В розділі Items to publish(Публіковані елементи) у списку Choose(Вибрати) виберіть елемент, який Ви не бажаєте опубліковувати та натисніть кнопку Remove(Видалити).

4. Можливості Excel, які не підтримуються на веб-сторінках

На жаль, деякі дуже корисні та популярні можливості Excel стають недоступними, коли Ви перетворюєте Ваші листи Excel на HTML:

  • Унемове форматуванняне підтримується при збереженні листа Excel як Single File Web Page(Веб-сторінка в одному файлі), тому переконайтеся, що Ви зберігаєте його як Web Page(Веб сторінка). Гістограми, колірні шкали та набори піктограм не підтримуються обома форматами веб-сторінок.
  • Повернутий або вертикальний текстне підтримується під час експорту даних із Excel у формат веб-сторінки. Будь-який повернутий або вертикальний текст у Вашій робочій книзі буде перетворено на горизонтальний текст.

5. Найпоширеніші проблеми, які при перетворенні файлів Excel в HTML

Перетворюючи робочу книгу Excel на веб-сторінку, можна зіткнутися з такими відомими труднощами.

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

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

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

Потім переходимо на нижню вкладку "Source" у WLW і копіюємо з поля весь величезний код

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

У результаті отримуємо єдину сторінку з текстом на 320 рядків.

Там ще треба знайти необхідне використання.