Как сделать таблицу excel в html?

Tarlyun blog

Экспорт таблиц из Excel в HTML

Часто перед блогером или веб-программистом возникает задача переноса данных из таблицы Excel на сайт. Стандартный механизм экспорта, встроенный в Excel, генерирует очень много мусора. Лишние классы, избыточное форматирование, кривые тэги и свойства для каждой ячейки. Всё это может привести к некорректному отображению на конкретном сайте. А так хотелось, чтобы можно было экспортировать таблицу в чистый HTML.

Сказано — сделано. Недаром же мы программисты. Благо в Excel встроен язык VBA (Visual Basic for Applications). Последний раз я что-то программировал на нем в 2003 году (и выполнял схожую задачу, только экспорт был для форума в bbcode сводной таблицы по состоянию альянсовых артефактов в игре DS). Но «вспомнить все» не составило большого труда. Если вас интересует итоговый результат, можете скачать xlsm-документ (документ Excel 2007 XML, с макросами) в конце статьи.

Пара слов о самом VBA. VBA — интерпретируемый язык. Имеет поддержку в следующих продуктах:

  • Microsoft Office
  • AutoCAD
  • SolidWorks
  • CorelDRAW
  • и некоторые другие.

Описывать каждую строчку кода не имеет смысла, опишу лишь итоговый интерфейс и некоторые нюансы.

Интерфейс Excel-документа

Скорее всего при открытии документа вы получите предупреждение:

А теперь непосредственно сам интерфейс:

Блок № 1 содержит настройки для экспорта. Вы можете изменить наименование класса для таблицы, и наименование класса для раскраски четных рядов.

Блок № 2 — это кнопка экспорта. Для удобства пользователя весь сгенерированный HTML код помещается в текстовое поле на форме.

Блок № 3 — форма, которая появляется после нажатия на кнопку «Export». Содержит TextBox и Button, нажав на который происходит копирование сгенерированного текста в буфер обмена и закрытие формы.

Блок № 4 — это сама таблица. Таблица начинается с ячейки A6.

Нюансы при оформлении таблицы

В первой строке (ячейка А6) находится caption для таблицы.
Высота таблицы определяется по столбцу А. Начиная с ячейчки А7 скрипт просматривает все ячейки вниз, пока не найдет пустую ячейку. Обнаружив пустую ячейку скрипт считает что это конец таблицы, и запоминает значение в переменную iLastLine . Аналогично происходит определение ширины таблицы. Начиная с ячейки А7 скрипт просматривает все ячейки вправо, пока не найдет пустую ячейку. Значение о последнем столбце заносится в переменную iLastCol . Если вам необходимо вставить пустую ячейку в первую строку или первый столбец можете воспользоваться

Читать еще:  Как сделать черточку в excel?

Допускается использование горизонтального объединения ячеек. Скрипт корректно заменяет их на colspan.
Скрипт определяет такое форматирование ячеек, как: bold, italic, center.
Если скрипт находит пустую ячейку внутри таблицы, то производится подстановка &nbsp ;

Ограничения при оформлении таблицы

  • Не использовать вертикальное объединение ячеек
  • Не использовать горизонтальное объединение ячеек, выходящее за границу шапки

Комментарии к коду

В VBA было принято ставить первую букву согласно типу переменной. Поэтому iFirstLine — это переменная типа int , которая содержит номер первой строки таблицы. А sLine — переменная типа string , которая содержит текст текущего ряда.
В VBA нет некоторых простых функций, поэтому для проверки четности переменной добавляем немного магии:

Смысл этого заклинания в том, что мы делим переменную целочисленно и точно на 2. Если число четное, оно без остатка разделится на 2, значения совпадут и выражение будет TRUE.

Также стоит заострить внимание на магии с объединенными ячейками.

У каждой ячейки есть свойство MergeCells , которое определяет наличие объединения. Если мы обнаружили объединенную ячейку, значит мы можем узнать длину объединения (через свойство MergeArea.Count ) и сразу пропустить объединенные ячейчки (которые не содержат полезной информации).

Также стоит упомянуть о работе с объектами. Чтобы присвоить значению переменной объект (например ячейку) необходимо воспользоваться конструкцией:

Как конвертировать HTML таблицу в Excel?

Работать с таблицами удобнее в Excel, поэтому всю табличную информацию переводят в формат xls или xlsx. Это касается и веб-таблиц, которые сохраняются в html-формате. Рассмотрим 3 способа, как переформатировать таблицу html в формат Экселя.

Способ №1. Стандартные средства Excel

Открываем программу и переходим в меню «Файл». Во вкладке «Открыть» кликаем на «Этот компьютер», затем «Документы» и находим в Проводнике нашу таблицу в формате html. После чего кликаем по ней два раза левой кнопкой мышки, чтобы она открылась в программе.

Читать еще:  Как сделать карту позиционирования в excel?

Недостаток такого метода в том, что таблицу придется серьезно редактировать. По сути, мы переводим в Excel только информацию. Чем лучше структура у html-таблицы, тем меньше придется редактировать ее в программе.

Чтобы сохранить таблицу в xls или xlsx формате, переходим снова в меню «Файл». Там заходим во вкладку «Сохранить как…», затем «Этот компьютер». Выбираем папку для сохранения и формат (тип файла).

Способ №2. Конвертация html в Excel онлайн

Многие пользователи предлагают десктопные программы для конвертации. Но мы считаем, что это пустая трата времени на загрузку и установку. Кроме того, многие из этих программ платные. Лучше воспользоваться бесплатными онлайн сервисами.

Переходим по ссылке и кликаем сразу на иконку «С компьютера». Или же файл можно загрузить с другого места – Google Drive, Dropbox или по ссылке.

Далее выбираем сам файл, после чего он загрузится на сервер. И теперь просто кликаем на иконку «Преобразовать».

Длительность конвертации – в зависимости от размера файла. После окончания процесса вы сможете скачать полученный xls файл на компьютер.

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

Еще один онлайн-сервис, который предлагает конвертировать html таблицу. Здесь все просто:

  • выбираем файл (Browse);
  • выставляем формат (Excel);
  • и далее кликаем «Скачать конвертированный файл».

Признаться, в Google Chrome у нас не получилось конвертировать файл. После последнего действия нас выбросило на пустую белую страницу.

Мы попробовали сделать конвертацию в Mozilla Firefox. И здесь столкнулись с той же проблемой, но теперь более информативной. Сервис написал об ошибке и предложил скачать компьютерную версию программы – Total HTML Converter.

Читать еще:  Как сделать подстановку текста в excel?

Способ №3. Утилита для компьютера

Признаемся, мы не хотели писать о сторонних программах. Но не ожидали, что этот онлайн-сервис предложит такой вариант. В целом, можно попробовать – утилита весит чуть больше 50 Мб и устанавливается секунд 20.

Открываем программу после установки. Справа находим папку с файлом, который нужно конвертировать. По средине выпадает список файлов – выбираем нужный нам. Заметьте, что слева начинает отображаться содержимое файла.

После того как мы поставили маркер напротив html-файла, кликаем на верхней панели по зелено иконке XLS.

Выберете папку, куда нужно сохранить файл – и нажимайте Start.

После конвертации автоматически откроется окно Проводника с папкой, куда мы сохранили итоговый xlsx-файл. Заметьте, что программа автоматически форматирует таблицы в xlsx файлы, хотя на иконке написано xls.

Честно говоря, мы разочаровались. Программа Total HTML Converter ничем не отличается по результату от стандартного способа, который мы описывали под №1. Конвертация точно такая же – html-страница копируется сплошняком со всеми графическими элементами.

Подводим итоги

Мы рассмотрели 3 способа конвертации html-таблиц в форматы Эскеля. Самый лучший, по крайней мере для нас, способ – онлайн конвертация на сервисе Convertio. Стандартный способ сохранения файла в Excel и использование сторонней программы дали одинаковый, не очень качественный результат.

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

Ссылка на основную публикацию
Adblock
detector