⬆️ ⬇️

Export to Excel from JS

Introduction



Hello! Today I will describe a rather trivial, but nowhere covered topic of exporting from an Excel data page. To my surprise, the process itself is not described anywhere in full. So let's get started.



Everything is written to us



I thought and started searching, I found SheetJS very quickly, but, my God, how everything is started there! If formatting can still be managed, styles are a headache.



Everything is written to us. Approach 2



In the old-old SharePoint 2007 there is such an opportunity to export the Excel file, surprisingly it still works and is well described.



What do you need:

')



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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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]; }) } , downloadURI = function(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; link.click(); } return function(table, name, fileName) { if (!table.nodeType) table = document.getElementById(table) var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} var resuri = uri + base64(format(template, ctx)) downloadURI(resuri, fileName); } })(); 


 // params: element id, sheet name, file name tableToExcel('resultTable','', '_.xls'); 


Formatting



Arrange the grid itself in the table using the colspan, rowspan attributes, add styles and then generate the file.



Finally



I can answer in the comments on your questions.

Source: https://habr.com/ru/post/353996/



All Articles