Експортиране на страница в Excel xslx

опитвам се да експортирам таблица от страница в Excel лист. Намерих част от кода и той работи добре, но изтегления файл се записва в xls, как мога да го накарам да бъде запазен в xlsx? Имам проблем и с турските символи, докато записвам таблица, турските символи не се записват,

моята част от кода, която намерих в интернет:

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))
      }
    })()

person Gerlav    schedule 28.01.2015    source източник
comment
Не можете да създавате XLSX файлове с този подход. Освен това създава не наистина XLS файлове, а SpreadsheetML с вграден HTML. За вашия проблем с турските знаци вижте stackoverflow.com/questions/25730008/. HTML трябва да бъде UFT-8 кодиран и шаблонът в подхода трябва да бъде разширен със заглавката тип съдържание.   -  person Axel Richter    schedule 28.01.2015
comment
Какво мога да използвам @Axel Richter за запазване на файл в xlsx? има ли друг подход за това?   -  person Gerlav    schedule 28.01.2015
comment
Търсенето в интернет ще доведе до някои резултати за javascript create xlsx файл. Но нищо не бях тествал. Предлагам да използвате решения от страна на сървъра (PHP, Java, .NET, ...) вместо такива от страна на клиента. От тях има много в дивата природа.   -  person Axel Richter    schedule 28.01.2015
comment
Между другото @Axel Richterr вашето решение работи за турски символи, благодаря много :)   -  person Gerlav    schedule 28.01.2015


Отговори (1)


XLSX файловете се състоят от куп XML файлове, описващи вашите данни и тяхната структура и компресирани заедно (ако преименувате "myfile.xlsx" на "myfile.zip", можете да видите какво има вътре). Това означава, че не можете да създадете такъв файл от страна на клиента, тъй като имате нужда от достъп до файловата система.

Има много налични библиотеки, които можете да използвате за генериране на XLSX файлове. Какъв език използвате за бекенда?

person Adrien    schedule 29.01.2015
comment
Използвам JSF за бекенд - person Gerlav; 05.02.2015