xlsx-hero
v0.0.1
Published
A light weight xlsx reader || builder in nodejs
Readme
xlsx-hero
🎃 XLSX import & export helper base on object schema in nodejs
Install
npm i xlsx-hero --saveUsage
Build Hero
import { XlsxHero } from '../utils/xlsxHero'
const Schema = {
name: 'my xlsx',
maxlength: 1000,
first: false,
allowEmpty: true,
columns: [{
title: 'name',
key: 'userName',
rules: [{
required: true
}]
}, {
title: 'email',
key: 'userEmail',
rules: [{
validator (rule, value, callback, source, options) {
// test if email address already exists in a database
// and add a validation error to the errors array if it does
callback(errors)
}
}]
}]
}
// construct xlsxHero base on schema
const importHero = new XlsxHero(schema)Schema constructor
schema property
| key | description | type | default | | :------| :------ | :------| :----- | | name | name of your sweet xslx (you may use it for export & template generate) | string || | maxlength | xlsx will throw an error if file length larger than maxlength | number || | first | throw an error when met first error during validation | boolean | false | | allowEmpty | allow empty row in your file, otherwise xlsx hero validator will throw an error when validate empty row | boolean | false | | rowAppend | additional object that needs inject to each row | object || | needBackFill | 在schema中指定需要backfill才会调用每一个单元格的backfill方法 | boolean | false | | columns | each row's schema | Row[] | |
Row: Cell[], Each row was an Array of Cell set
Each Cell property
| key | description | type | | :------| :------ | :------| | title| title for | string | | key| key | string | | rules | validate rules | object[] | | backfill | backfill object to this row, base on current cell value | Function(row) | | render | render funtion | Function(value: CurrentCellValue, row: CurrentRow) |
Api
buildTemplate
Generate template sheet base on schema
const tempalte = importHero.buildTemplate('my template')validate
Validate import file
const { data, detail } = await importHero.validate(file)detail properties
| key | description | | :-----| :------ | | validateCost | validate whole xlsx file cost time | | parseCost | parse whole xlsx file cost time |
generateSheet
Generate worksheet buffer
const buffer = exportHero.generateSheet(result)Generate work sheet array data
const opts = { raw: true }
const data = exportHero.generateSheet(result, opts)Try it out
cd example
npm i
node index.jsThen open http://localhost:3008/
(For server: Make sure you have node v7.6.0 or higher installed for ES2015 and async function support)
(For client: Make sure your browser support Fetch & Promise && DO NOT USE IE8 OR BELOW)
Enjoy :)
