从JavaScript或JQuery创建简单的XLSX(Excel文件)



这是小提琴https://jsfiddle.net/ym4egje0/

我有两件事要问

  1. 这是创建XLS,如何创建XLSX文件,并且它在IE中不起作用,仅在Google Chrome中起作用,如何使其在IE中起作用?

  2. 我想放置ColumnHead列标题文本,Message1和Message2应该是连续的行。

必须将作为(。(的索引切成行。

html

<input id="btnExport" type="button" value = "Generate File" />

js/jquery

$("#btnExport").click(function (e) { 
var ColumnHead = "Column Header Text";
var Messages = "n message1.n message2.";
   window.open('data:application/vnd.ms-excel,' + Messages);
    e.preventDefault();
});

查看此小提琴以解决您的问题。它将为Google Chrome和IE

创建文件

https://jsfiddle.net/shaswatatripathy/fo4ugmlp/1/

html

<input type="button" id="test" onClick="fnExcelReport();" value="download" />
<div id='MessageHolder'></div>
<a href="#" id="testAnchor"></a>

JS

var tab_text;
var data_type = 'data:application/vnd.ms-excel';

function CreateHiddenTable(ListOfMessages)
{
var ColumnHead = "Column Header Text";
var TableMarkUp='<table id="myModifiedTable" class="visibilityHide"><thead><tr><td><b>'+ColumnHead+'</b></td>  </tr></thead><tbody>';
for(i=0; i<ListOfMessages.length; i++){
    TableMarkUp += '<tr><td>' + ListOfMessages[i] +'</td></tr>';
}
TableMarkUp += "</tbody></table>";
$('#MessageHolder').append(TableMarkUp);
}
function fnExcelReport() {
var Messages = "n message1.n message2.";
var ListOfMessages = Messages.split(".");
CreateHiddenTable(ListOfMessages);
    tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
    tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';
    tab_text = tab_text + '<x:Name>Error Messages</x:Name>';
    tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
    tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';
    tab_text = tab_text + "<table border='1px'>";
    tab_text = tab_text + $('#myModifiedTable').html();;
    tab_text = tab_text + '</table></body></html>';
    data_type = 'data:application/vnd.ms-excel';
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");
    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11./)) {
        if (window.navigator.msSaveBlob) {
            var blob = new Blob([tab_text], {
                type: "application/csv;charset=utf-8;"
            });
            navigator.msSaveBlob(blob, 'Test file.xls');
        }
    } else {
    console.log(data_type);
console.log(tab_text);
      $('#testAnchor')[0].click()
    }
$('#MessageHolder').html("");
}
$($("#testAnchor")[0]).click(function(){
console.log(data_type);
console.log(tab_text);
  $('#testAnchor').attr('href', data_type + ', ' + encodeURIComponent(tab_text));
        $('#testAnchor').attr('download', 'Test file.xls');
});

CSS

.visibilityHide
{
  visibility:hidden;
}

最新更新