JavaScript HTML
Clone or download


JavaScript export to Excel or CSV

A quick JavaScript library to create export to Excel/CSV from HTML tables in the browser. No server required.

As part of the new version 3.0.0+, there is support for XLSX. The drawback is that the library is 600+ KB.

If you only need XLS or CSV, use 2.X.X versions.

Check my blog page for testing: JavaScript export to Excel

ExcellentExport.js update: JavaScript export to Excel and CSV


  • Define the final API for ExcellentExport.convert(...)
  • Remove rows or columns from a table.
  • Filter and process cell values.
  • Output as a Blob.
  • Set fonts to the sheet.
  • Insert images ?

Revision history:

3.1.0 (in progress)

  • Fix old API for base64 and escaping problem.

3.0.0 (22/10/2017)

  • 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


Firefox, Chrome, Internet Explorer 11+.



bower install excellentexport


npm install excellentexport


Get Composer:

$ curl -s | php
$ php composer.phar install

Create a composer.json file for your project:

    "repositories": [
            "type": "vcs",
            "url": ""
    "require": {
        "jmaister/excellentexport": "~1.4.0"

Run composer install.


Include script in your HTML:

<script type="text/javascript" src="/components/excellentexport/dist/excellentexport.js"></script>


<script src=""></script>
    require(['dist/excellentexport'], function(ee) {
        window.ExcellentExport = ee;


import ExcellentExport from 'excellentexport';


<table id="datatable">
        <td>100</td> <td>200</td> <td>300</td>
        <td>400</td> <td>500</td> <td>600</td>

<a download="somedata.xls" href="#" onclick="return ExcellentExport.excel(this, 'datatable', 'Sheet Name Here');">Export to Excel</a>
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable');">Export to CSV</a>
<!-- new API, xlsx -->
<a download="somedata.xlsx" href="#" onclick="return ExcellentExport.convert({ anchor: this, filename: 'data_123.array', format: 'xlsx'},[{name: 'Sheet Name Here 1', from: {table: 'datatable'}}]);">Export to CSV</a>


IE8 or lower do not support data: url schema. IE9 does not support data: url schema on links. IE10 and above and Edge are supported via the Microsoft-specific msOpenOrSaveBlob method.


python 2.x:
    python -m SimpleHTTPServer 8000

python 3.x:
    python -m http.server 8000


Install dependencies:

npm install

Build dist/excellentexport.js

npm run build


npm publish