Jordi Burgos's avatar

ExcellentExport.js update: Javascript export to Excel and CSV

Read in 3 min.

Check the previous article for more information on: Javascript export to Excel

Updated to v3.3.0

The ExcellentExport library is having a lot of visits, from people coming directly to the page or redirected by search engines. So, I decided to update it.

I have got some ideas from comments on the blog or discussions on reddit.

Download the new version from: ExcellentExport.js v3.3.0

Revision history:


  • Remove columns by index
  • Filter rows by value
  • Updated build to Webpack 4.x.x


  • Update npm dependencies to fix vulnerabilities


  • Update npm dependencies to fix vulnerabilities


  • Fix old API for base64 and escaping problem.


  • XLSX support. This bumps the build size to 640 KB.
  • New API: ExcellentExport.convert(...)
  • Autogenerate download filename.
  • Data input from arrays or HTML Tables.
  • Multiple sheets for XLS or XLSX formats.

2.1.0 (24/09/2017)

  • Add Webpack build.
  • Create UMD JavaScript module. Library can be loaded as a module (import, RequireJS, AMD, etc...) or standalone as window.ExcelentExport.

2.0.3 (21/01/2017)

  • Fix export as a module.
  • Changed minifier to UglifyJS.

2.0.2 (10/01/2017)

  • Fix CSV Chinese characters and other special characters display error in Windows Excel.
  • Fix URL.createObjectURL(...) on Firefox.

2.0.0 (03/10/2016)

  • Now it can export to big files +2MB.
  • Minimum IE 11.
  • Links open with URL.createObjectURL(...).
  • NPM package available.
  • Using Semantic versioning (2.0.0 instead of 2.0).
  • Module can be loaded standalone or with RequireJS.
  • Change license to MIT.


  • Possibility to select a CSV delimiter.
  • Bower package available.
  • Compose package available.


  • Add LICENSE.txt with GPL v3.
  • UTF-8 characters fixed.


  • Added minified version.


  • Added CSV data export


  • Added Excel data export

Working example

Column 1 Column "cool" 2 Column 3 Column 4
100,111 200 300 áéíóú
400 500 600 àèìòù
Text More text Text with new line ç ñ ÄËÏÖÜ äëïöü


 ExcellentExport.convert(options, sheets);

    anchor: String/Element,
    format: 'xlsx'/'xls'/'csv',
    filename: String

 Sheet element configuration:
    name: 'Sheet 1', // Sheet name
    from: {
        table: String/Element, // Table ID or table element
        array: [...], // Array with data
        arrayHasHeader: true, // Array first row is the header
        removeColumns: [...], // Array of column indexes (from 0)
        filterRowFn: function(row) {return true} // Return true to keep


Now ExcellentExport.js basically works on all browsers. It is ready for you to use on your projects.

Check on github or this blog for updates. ExcellentExport.js.

Probably, you want to share this article: