title: JavaScript - Convert CSV to XLSX (Preferably Without Use of Library(s))
body: <p>As the title says, I currently have a CSV file created from SharePoint list data and in order to display this information as a spreadsheet, I want to convert it to an Excel XLSX file.  I prefer to do this without relying on a third-party library.  At first, I started to use ActiveX objects to try to recreate and/or save the CSV as XLSX, but there's a limitation with that since I can't really use it in other browsers besides IE.  I was thinking using Blob to somehow convert it?  That's where I'm stuck.</p>
  
  <pre><code>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 &gt; 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);
  
  }
  </code></pre>
  
  <p>CSV works fine with using the spreadsheet (by downloading and opening it in Excel), but I really need a way to display it as a spreadsheet on a webpage and not as text, so that's why I'm looking to convert it over.  Since I'm using this within SharePoint then I can use a Excel web part to display the XLSX - it won't open CSV files like this though. Thanks in advance.</p>