0.0.1 • Published 5 years ago

xlsx-hero v0.0.1

Weekly downloads
2
License
Apache
Repository
github
Last release
5 years ago

xlsx-hero

🎃 XLSX import & export helper base on object schema in nodejs

Install

npm i xlsx-hero --save

Usage

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
keydescriptiontypedefault
namename of your sweet xslx (you may use it for export & template generate)string
maxlengthxlsx will throw an error if file length larger than maxlengthnumber
firstthrow an error when met first error during validationbooleanfalse
allowEmptyallow empty row in your file, otherwise xlsx hero validator will throw an error when validate empty rowbooleanfalse
rowAppendadditional object that needs inject to each rowobject
needBackFill在schema中指定需要backfill才会调用每一个单元格的backfill方法booleanfalse
columnseach row's schemaRow[]

Row: Cell[], Each row was an Array of Cell set

Each Cell property
keydescriptiontype
titletitle forstring
keykeystring
rulesvalidate rulesobject[]
backfillbackfill object to this row, base on current cell valueFunction(row)
renderrender funtionFunction(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
keydescription
validateCostvalidate whole xlsx file cost time
parseCostparse 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.js

Then 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 :)