ExcellentExport.js
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.
Revision history:
3.6.0
Transform the project from JavaScript to TypeScript
Configure Jest as test runner
Update npm dependencies to fix vulnerabilities
3.5.0
Add fixValue and fixArray functions to configuration: these configuration functions can be used to manipulate the values of the cells.
Update npm dependencies to fix vulnerabilities
3.4.3
Update npm dependencies to fix vulnerabilities
3.4.2
Remove ES6 function syntax to support IE11
Update npm dependencies to fix vulnerabilities
3.4.0
Configure TravisCI on GitHub
Update npm dependencies to fix vulnerabilities
3.3.0
Remove columns by index
Filter rows by value
Updated build to Webpack 4.x.x
3.2.1
Update npm dependencies to fix vulnerabilities
3.2.0
Update npm dependencies to fix vulnerabilities
3.1.0
Fix old API for base64 and escaping problem.
3.0.0
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
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
Fix export as a module.
Changed minifier to UglifyJS.
2.0.2
Fix CSV Chinese characters and other special characters display error in Windows Excel.
Fix URL.createObjectURL(...) on Firefox.
2.0.0
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.
1.5
Possibility to select a CSV delimiter.
Bower package available.
Compose package available.
1.4
Add LICENSE.txt with GPL v3
UTF-8 characters fixed.
1.3
Added minified version
1.1
Added CSV data export
1.0
Added Excel data export
Compatibility
Firefox
Chrome
Internet Explorer 11+
Install
npm
npm install excellentexport --save
yarn
yarn add excellentexport
bower
bower install excellentexport
Load
Include script in your HTML:
Include script in your HTML using CDN:
Require.js
require(['dist/excellentexport'], function(ee) {
window.ExcellentExport = ee;
});
ES6 import
import ExcellentExport from 'excellentexport';
Usage
100 | 200 | 300 |
400 | 500 | 600 |
API
ExcellentExport.convert(options, sheets);
Options:
{
anchor: String or HTML Element,
format: 'xlsx' or 'xls' or 'csv',
filename: String
}
Sheets must be an array of sheet configuration objects. Sheet description:
[
{
name: 'Sheet 1', // Sheet name
from: {
table: String/Element, // Table ID or table element
array: [...] // Array with the data. Array where each element is a row. Every row is an array of the cells.
},
removeColumns: [...], // Array of column indexes (from 0)
filterRowFn: function(row) {return true}, // Function to decide which rows are returned
fixValue: function(value, row, column) {return fixedValue} // Function to fix values, receiving value, row num, column num
fixArray: function(array) {return array} // Function to manipulate the whole data array
...
},
{
...
}, ...
]
fixValue example
This is an example for the fixValue function to handle HTML tags inside a table cell.
It transforms BR to line breaks and then strips all the HTML tags.
fixValue: (value, row, col) => {
let v = value.replace(/
/gi, "\n");
let strippedString = v.replace(/(]+)>)/gi, "");
return strippedString;
}
Notes
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.
Test
python 2.x:
python -m SimpleHTTPServer 8000
python 3.x:
python -m http.server 8000
Build
Install dependencies:
npm install
Build development version dist/excellentexport.js
npm run build
Build publish version of dist/excellentexport.js
npm run prod
Publish
npm publish