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 200+ KB.
Check My Blog Page for Testing : JavaScript export to Excel
ExcellentExport.js update: JavaScript export to Excel and CSV
openAsDownload: boolean
. Use this option to download as a file without using an anchor tag. So download can be triggered from a button.npm install excellentexport --save
yarn add excellentexport
bower install excellentexport
Include script in your HTML:
<script type="text/javascript" src="dist/excellentexport.js"></script>
Include script in your HTML using CDN:
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/excellentexport.min.js"></script>
Require.js
<script src="http://requirejs.org/docs/release/2.3.6/minified/require.js"></script>
<script>
require(['dist/excellentexport'], function(ee) {
window.ExcellentExport = ee;
});
</script>
ES6 import
import ExcellentExport from 'excellentexport';
<table id="datatable">
<tr>
<td>100</td> <td>200</td> <td>300</td>
</tr>
<tr>
<td>400</td> <td>500</td> <td>600</td>
</tr>
</table>
<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>
ExcellentExport.convert(options, sheets);
Options:
{
anchor: String or HTML Element,
format: 'xlsx' or 'xls' or 'csv',
filename: String,
rtl: Use Right-to-left characters, boolean (optional)
}
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
rtl: Use Right-to-left characters, boolean (optional)
formats: [...] // Array of formats for each column. See formats below.
...
},
{
...
}, ...
]
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(/<br>/gi, "\n");
let strippedString = v.replace(/(<([^>]+)>)/gi, "");
return strippedString;
}
You can specify an array with the formats for a specific cell range (i.e. A1:A100, A1:D100, A1:H1, etc).
Each element in the format array consists on:
{
"range": "A1:A100", // Range of cells to apply the format, mandatory
"format": {
"type": "<cell_type>", // Type of format, mandatory
"pattern": "<pattern>" // Pattern, optional
}
}
Example:
formats: [
{
range: "C2:C20",
format: {
type: "n",
pattern: "0.00",
},
},
{
range: "C2:C20",
format: ExcellentExport.formats.NUMBER,
}
],
format
can be used from one of the predefined types if you use TypeScript
cell_type
can be one of the followint:
's': String
'n': Number
'd': Date
'b': Boolean
pattern
is a string with the format pattern used in Excel. For example:
'0' // Integer
'0.00' // 2 decimals
'dd/mm/yyyy' // Date
'dd/mm/yyyy hh:mm:ss' // Date and time
'0.00%' // Percentage
'0.00e+00' // Scientific notation
'@' // Text
msOpenOrSaveBlob
method.python 2.x:
python -m SimpleHTTPServer 8000
python 3.x:
python -m http.server 8000
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