Ever wanted to generate a CSV (comma separated values) file directly from the browser, using Javascript? Instead of going to the server..

Look no further!

Create a function to download a csv file

function downloadCsv(csvData: string, filename: string) {
      const blob = new Blob(['\ufeff' + csvData], {
        type: 'text/csv;charset=utf-8;'
      });
      const dwldLink = document.createElement("a");
      const url = URL.createObjectURL(blob);
      const isSafariBrowser = navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1;

      //if Safari open in new window to save file with random filename.
      if (isSafariBrowser)
        dwldLink.setAttribute("target", "_blank");
      
      dwldLink.setAttribute("href", url);
      dwldLink.setAttribute("download", filename+ ".csv");
      dwldLink.style.visibility = "hidden";
      document.body.appendChild(dwldLink);
      dwldLink.click();
      document.body.removeChild(dwldLink);
}

How to use our function

// define some data
const data = 'Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8\n' +
             '12345,abc.de,AB1234567890,USD,01-Jan-21,100,10000000,1.23\n' +
             '12345,abc.de,AB1234567890,USD,01-Jan-21,100,10000000,\n' +
             '12345,abc.de,AB1234567890,USD,01-Jan-21,100,';

// define a file name
const file = 'OurFile';

// use the function
downloadCsv(data, file);