Экспорт HTML таблицы с входными значениями формы в ней с помощью JavaScript - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть таблица HTML. Внутри его тегов <th></td> есть поля ввода формы с типами текста, числа, даты и времени. У меня есть следующий JavaScript, с помощью которого я могу экспортировать таблицу в Excel. Когда я заполняю поля и нажимаю кнопку экспорта, таблица экспортируется с пустыми полями:

Любое решение, пожалуйста?

var tableToExcel = (function() {
  var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})()

// SelectAll Checkboxes
function selectAll(source) {
    checkboxes = document.getElementsByName('select_all[]');
    for (var i in checkboxes)
        checkboxes[i].checked = source.checked;
}

1 Ответ

0 голосов
/ 07 ноября 2018

Подход, который вы используете, широко не поддерживается всеми браузерами, и экспорт в Excel с использованием чистого Javascript в значительной степени бесполезен. Вы можете заставить это работать в одном, но гарантируете это через браузеры и поскольку изменения поддержки будут в лучшем случае рискованными.

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

...