RSS Git Download  Clone
  src robo8x [chore] 3/28/2020, 11:10:18 AM 4 years, 9 months ago
  test robo8x [chore] 3/28/2020, 11:01:55 AM 4 years, 9 months ago
  .editorconfig 415B robo8x [chore] 3/28/2020, 10:43:56 AM 4 years, 9 months ago
  .gitignore 223B robo8x [chore] 3/28/2020, 10:43:56 AM 4 years, 9 months ago
  .npmignore 168B robo8x [chore] 3/28/2020, 10:43:56 AM 4 years, 9 months ago
  .travis.yml 102B robo8x [chore] 3/28/2020, 10:43:56 AM 4 years, 9 months ago
  Gruntfile.js 254B robo8x [chore] 3/28/2020, 10:43:56 AM 4 years, 9 months ago
  LICENSE 1kB robo8x [chore] 3/28/2020, 10:46:40 AM 4 years, 9 months ago
  README.md 5kB robo8x [chore] 3/28/2020, 11:10:18 AM 4 years, 9 months ago
  json2xls-worker-thread.iml 335B robo8x [chore] 3/28/2020, 10:43:56 AM 4 years, 9 months ago
  package.json 1kB robo8x [chore] 3/28/2020, 11:10:18 AM 4 years, 9 months ago
  README.md
[//]: #@corifeus-header [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://paypal.me/patrikx3) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Corifeus @ Facebook](https://img.shields.io/badge/Facebook-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [![Build Status](https://api.travis-ci.com/patrikx3/json2xls-worker-thread.svg?branch=master)](https://travis-ci.com/patrikx3/json2xls-worker-thread) [![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m780749701-41bcade28c1ea8154eda7cca.svg)](https://uptimerobot.patrikx3.com/) --- # 📈 Convert JSON to XLSX with offloading the constructing the data using a worker thread v2020.4.131 **Bugs are evident™ - MATRIX️** ### Node Version Requirement ``` >=12.13.0 ``` ### Built on Node ``` v12.16.1 ``` The ```async``` and ```await``` keywords are required. Install NodeJs: https://nodejs.org/en/download/package-manager/ # Description [//]: #@corifeus-header:end Utility to convert json to an excel file, based on [Node-Excel-Export](https://github.com/functionscope/Node-Excel-Export) using a worker thread by not blocking the NodeJs event loop using `async` functions and options. This is a totally fork of the [json2xls](https://github.com/rikkertkoppes/json2xls), but the XLSX constructing can be CPU intensive so we are offloading the XLSX constructing using a worker thread. # Installation ```bash npm install p3x-json2xls-worker-thread ``` # Usage Use to save as file: ```js const json2xls = require('p3x-json2xls-worker-thread') const fs = require('fs').promises const json = { foo: 'bar', qux: 'moo', poo: 123, stux: new Date() } const executAsync = async() => { try { // let nodeExcelOptions = undefined /* The following options are supported: - style: a styles xml file, see <https://github.com/functionscope/Node-Excel-Export> - fields: either an array or map containing field configuration: - array: a list of names of fields to be exported, in that order - object: a map of names of fields to be exported and the types of those fields. Supported types are 'number','string','bool' */ if (ifSomeConditionIsTrue) { nodeExcelOptions = { fields: ['poo'] } } const options = { output: 'binary' /* default */ || 'base64', nodeExcel: nodeExcelOptions } const xlsBinary = await json2xls(json, options) await fs.writeFile('data.xlsx', xlsBinary, 'binary'); } catch(e) { // handle error console.error(e) } } executAsync() ``` Or use as express middleware. It adds a convenience `xls` method to the response object to immediately output an excel as download. ```js const json2xls = require('p3x-json2xls-worker-thread') const jsonArr = [{ foo: 'bar', qux: 'moo', poo: 123, stux: new Date() }, { foo: 'bar', qux: 'moo', poo: 345, stux: new Date() }]; app.use(json2xls.middleware); app.get('/',function(req, res) { res.xls('data.xlsx', jsonArr); }); ``` [//]: #@corifeus-footer --- 🙏 This is an open-source project. Star this repository, if you like it, or even donate to maintain the servers and the development. Thank you so much! Possible, this server, rarely, is down, please, hang on for 15-30 minutes and the server will be back up. All my domains ([patrikx3.com](https://patrikx3.com) and [corifeus.com](https://corifeus.com)) could have minor errors, since I am developing in my free time. However, it is usually stable. **Note about versioning:** Versions are cut in Major.Minor.Patch schema. Major is always the current year. Minor is either 4 (January - June) or 10 (July - December). Patch is incremental by every build. If there is a breaking change, it should be noted in the readme. --- [**P3X-JSON2XLS-WORKER-THREAD**](https://pages.corifeus.com/json2xls-worker-thread) Build v2020.4.131 [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) ## P3X Sponsor [IntelliJ - The most intelligent Java IDE](https://www.jetbrains.com/?from=patrikx3) [![JetBrains](https://cdn.corifeus.com/assets/svg/jetbrains-logo.svg)](https://www.jetbrains.com/?from=patrikx3) [//]: #@corifeus-footer:end