JavaScript – 将CSV转换为XLSX(最好不使用库)

正如标题所说,我目前有一个从SharePoint列表数据创build的CSV文件,为了将这些信息显示为电子表格,我想将其转换为Excel XLSX文件。 我更喜欢这样做,而不依赖于第三方库。 起初,我开始使用ActiveX对象尝试重新创build和/或将CSV保存为XLSX,但是由于我不能在除IE之外的其他浏览器中使用它,所以存在一个限制。 我想用Blob来转换它? 这就是我卡住的地方。

function createCsv(data) { var result = ""; if (data == null || data.length == 0) { return; } var columnDelimiter = ','; var lineDelimiter = '\n'; var keys = Object.keys(data[0]); // spreadsheet header result += keys.join(columnDelimiter); result += lineDelimiter; // spreadsheet data data.forEach(function (obj) { var count = 0; keys.forEach(function (key) { if (count > 0) { result += columnDelimiter; } result += obj[key]; count++; }); result += lineDelimiter; }); return result; } function downloadCsv(csv) { if (csv == null) { return; } var filename = "test.csv"; csv = "data:text/csv;charset=utf-8," + csv; var data = encodeURI(csv); console.log(data); var link = document.getElementById('csv'); link.setAttribute('href', data); link.setAttribute('download', filename); console.log(link); //displayCsv(csv); } function displayCsv() { // using test csv here var message = "data:text/csv;charset=utf-8, yo, hey, lol"; //var fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; var fileType = "application/msexcel"; var csvFile = new Blob([message], {type: fileType}); var csvUrl = URL.createObjectURL(csvFile); console.log(csvFile); console.log(csvUrl); } 

CSV使用电子表格(通过下载并在Excel中打开)正常工作,但我真的需要一种方法来显示它在网页上的电子表格,而不是文本,所以这就是为什么我要转换它。 因为我在SharePoint内使用这个,我可以使用Excel Web部件来显示XLSX – 它不会像这样打开CSV文件。 提前致谢。