Экспорт таблицы HTML в Excel | REDs Group
REDS Group
ул. Большая Академическая, дом 5, стр. 1, Москва.

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

30

У многих возникает проблема с экспортом простых HTML таблиц в Excel (*.xls). Сегодня мы покажем, как это можно сделать простым способом, не применяя дополнительных библиотек, используя PHP

Excel давно научился сохранять свои файлы, как HTML документ, следовательно мы можем выполнить данный процесс в обратную сторону – сохранить HTML документ (в нашем случае таблица 'table').

Перейдём сразу к делу. 

Для того чтобы выполнить задачу, нам потребуется:

  1. Таблица HTML
  2. Форма с одной кнопкой
  3. Обработчик PHP

Разберём все по порядку:

1. Таблица HTML

Это тот элемент, который нам необходимо перенести в Excel. Он может быть любого объема, самое главное, чтобы это была именно таблица HTML в тегах table. Причём не важно, есть в нем thead, или его нет. Но если он будет, то таблица выгрузится корректнее.

2. Форма с кнопкой

Под формой подразумевается одна кнопка, на которой будет написано "EXCEL" или "Выгрузить в Excel". Стилизировать кнопку вы сможете и сами. Главный смысл, чтобы данная кнопка при нажатии отправляла POST запрос в обработчик.

Вот пример:

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

  $(document).ready(function() {
      $('.button--excel').attr('disabled', false);
      var excel_data = $('#report_table').html(); 
      $('#xls_data').val(excel_data);
  });

Теперь разложим, как работает эта форма в комбинации с js.

Поля в форме:

xls_data - Поле, в которое запишется наш код таблицы, который мы отправим в обработчик.
report_name - Название отчета (будет в названии файла)
button--excel - Кнопка отправки

В js коде происходит следующее. Кнопка экспорта становится активной (происходит разблокировка) по завершению загрузки страницы, далее код таблицы (в нашем случае id таблицы -  #report_table), передается в поле #xls_data.

Со клиентской стороны всё готово, осталось создать простейший обработчик, который сформирует xls файл (внимание, пробелы перед началом тегов):

header('Content-Type: application/vnd.ms-excel; charset=utf-8;');  
header('Content-disposition: attachment; filename='.$_POST["report_name"].'_'.date("d-m-Y").'.xls');  
header("Content-Transfer-Encoding: binary ");
echo '  
   < html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 < head>
 
 
 < title>Demo
 
 < body>';
echo '< table border="1" cellpadding="15">';
echo $_POST["data"];  
echo '';
echo '
'; echo '';

В данном обработчике есть все необходимые заголовки для формирования таблицы Excel с кодировкой UTF-8. Формируется название файла и вставляется сама таблица.

Готово! Можете проверять результат. Способ не должен быть реализован обязательно таким образом. Показан простой пример реализации.

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

12.05.2019 /
Комментарии (0)