A simple module for excel and json converts each other.
It is recommended to run webpack on node 6.x or higher.
Install the pkg with npm:
npm install js2excel --save
or yarn
yarn add js2excel
or bower
bower install js2excel
// es6
import {json2excel, excel2json} from 'js2excel';
//CommonJS
let { json2excel, excel2json } = require('js2excel');
// excel's data will be exports, which you probably get it from server.
let data = [
{
"userId": 1,
"userPhoneNumber": 1888888888,
"userAddress": 'xxxx',
"date": '2013/09/10 09:10' // string
},
{
"userId": 2,
"userPhoneNumber": 1888888888,
"userAddress": 'xxxx',
"date": new Date()
},
{
"userId": 3,
"userPhoneNumber": 1888888888,
"userAddress": 'xxxx',
"date": new Date()
}
];
// this will be export a excel and the file's name is user-info-data.xlsx
// the default file's name is excel.xlsx
try {
json2excel({
data,
name: 'user-info-data',
formateDate: 'yyyy/mm/dd'
});
} catch (e) {
console.error('export error');
}
// for webpack 3: dynamic import
import(/* webpackChunkName: "js2excel" */ 'js2excel').then(({json2excel}) => {
json2excel({
data,
name: 'test',
formateDate: 'dd/mm/yyyy'
});
}).catch((e) => {
});
Exports result as the image shows:
import { excel2json } from 'js2excel';
// html
<input type="file" multiple="false" id="sheets" accept="application/x-iwork-keynote-sffnumbers,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" @change="onchange" />
// methods
onchange(e){
excel2json(e.target.files, (data) => {
console.log('json', data)
}, 'excel2json')
}
// for webpack 3: dynamic import
onchange(e) {
import(/* webpackChunkName: "js2excel" */ 'js2excel').then(({excel2json}) => {
excel2json(e.target.files, (data) => {
console.log('json', data)
}, 'excel2json')
}).catch((e) => {
});
}
Example, if you hava a excel as following:
The data maybe as following:
Convert json to excel(.xlsx).
opts
Type: Object
opts.data
Type: Array
Default: []
Excel's data.
opts.name
Type: String
Default: excel
Excel's name, whose suffix is .xlsx
.
opts.formateDate
Type: String
Default: dd/mm/yyyy
The date formate in rows' data. Examples:
'dd/mm/yyyy' => 08/07/2017
'd/m/yy' => 8/7/17
'd/m/yy hh:ss' => 8/7/17 18:29
'yyyy/mm/dd hh:ss' => 2017/07/17 18:29
Convert excel(.numbers/.xlsx/.xls) to json.
files
Type: Array
FileList from <input type='file' multiple="false" >
.
cb(data)
Type: Function
Callback function called on finish. The data
maybe as following:
{
`${sheetName}`: `[${excelRowsData}]`
'sheet1': [/** excel rows' data **/],
'sheet2': [/** excel rows' data **/],
'sheet3': [/** excel rows' data **/]
...
}
defval
Type: String
Default: ''
The default value when the row data corresponding to the column is blank.
Convert CSV file to json.
files
Type: Array
FileList from <input type='file' multiple="false" >
.
cb(data)
Type: Function
Callback function called on finish.
encode
Type: String
Default: UTF-8
The default encode when reading file.
MIT