p3x-json2xls-worker-thread
Version:
π Convert JSON to Excel XLSX with offloading the constructing the data using a worker thread
211 lines (139 loc) β’ 8.11 kB
Markdown
[//]: #@corifeus-header
[](https://www.npmjs.com/package/p3x-json2xls-worker-thread) [](https://paypal.me/patrikx3) [](https://www.patrikx3.com/en/front/contact) [](https://www.facebook.com/corifeus.software) [](https://network.corifeus.com/status/31ad7a5c194347c33e5445dbaf8)
# π Convert JSON to Excel XLSX with offloading the constructing the data using a worker thread v2026.4.132
π **Bugs are evidentβ’ - MATRIXοΈ**
π§ **This project is under active development!**
π’ **We welcome your feedback and contributions.**
### NodeJS LTS is supported
### π οΈ Built on NodeJs version
```txt
v24.14.1
```
# π 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.
Of course, when using a worker thread, the execution is about 20-25ms longer, than when we are in the event loop, so the worker thread is valid when we are generating a big dataset.
# 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);
});
```
It is possible to block the event loop by using the `sync` function eg.:
```js
const json2xls = require('p3x-json2xls-worker-thread')
const json = {
foo: 'bar',
qux: 'moo',
poo: 123,
stux: new Date()
}
const xlsBinary = json2xls.sync(json, {
output: 'base64' // can be binary as well, just sugar...
})
console.log(xlsBinary)
```
[//]: #@corifeus-footer
---
# π Meet Assistant SaaS β meeting.corifeus.com
Don't want to install anything? Try the **hosted version** at **[meeting.corifeus.com](https://meeting.corifeus.com)** β full meeting workflow built for European businesses, no setup, no API key, no command line.
What the hosted version offers:
- **21-language live translation** during the meeting
- **AI summaries, action items, decisions, attendees, key quotes** auto-generated after every meeting
- **Custom vocabulary** β your client / company / industry terms corrected automatically (Pro+ tier)
- **Searchable meeting library** β find any decision or promise across all your past meetings
- **Shareable read-only links** β send a clean meeting summary to a client or teammate, no signup needed on their end
- **One-click email summary** after each meeting
- **Premium engine on every plan** β no downgraded model, ever
- **EU billing** β Stripe Tax + VAT-compliant + EUR-priced (Solo β¬19.99 / Pro β¬39.99 / Business β¬99.99 per month, no lock-in)
- **GDPR-compliant by default** β browser-language auto-detection, no tracking cookies, your meetings stored encrypted
Try the live demo (1 minute free, no signup) or browse the **public sample meeting** at [meeting.corifeus.com/sample](https://meeting.corifeus.com/sample).
---
# Corifeus Network
AI-powered network & email toolkit β free, no signup.
**Web** Β· [network.corifeus.com](https://network.corifeus.com) **MCP** Β· [`npm i -g p3x-network-mcp`](https://www.npmjs.com/package/p3x-network-mcp)
- **AI Network Assistant** β ask in plain language, get a full domain health report
- **Network Audit** β DNS, SSL, security headers, DNSBL, BGP, IPv6, geolocation in one call
- **Diagnostics** β DNS lookup & global propagation, WHOIS, reverse DNS, HTTP check, my-IP
- **Mail Tester** β live SPF/DKIM/DMARC + spam score + AI fix suggestions, results emailed (localized)
- **Monitoring** β TCP / HTTP / Ping with alerts and public status pages
- **MCP server** β 17 tools exposed to Claude Code, Codex, Cursor, any MCP client
- **Install** β `claude mcp add p3x-network -- npx p3x-network-mcp`
- **Try** β *"audit example.com"*, *"why do my emails land in spam? test me@example.com"*
- **Source** β [patrikx3/network](https://github.com/patrikx3/network) Β· [patrikx3/network-mcp](https://github.com/patrikx3/network-mcp)
- **Contact** β [patrikx3.com](https://www.patrikx3.com/en/front/contact) Β· [donate](https://paypal.me/patrikx3)
---
## β€οΈ Support Our Open-Source Project
If you appreciate our work, consider β starring this repository or π° making a donation to support server maintenance and ongoing development. Your support means the world to usβthank you!
---
### π About My Domains
All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](https://corifeus.eu), and [corifeus.com](https://corifeus.com), are developed in my spare time. While you may encounter minor errors, the sites are generally stable and fully functional.
---
### π Versioning Policy
**Version Structure:** We follow a **Major.Minor.Patch** versioning scheme:
- **Major:** π
Corresponds to the current year.
- **Minor:** π Set as 4 for releases from January to June, and 10 for July to December.
- **Patch:** π§ Incremental, updated with each build.
**π¨ Important Changes:** Any breaking changes are prominently noted in the readme to keep you informed.
[**P3X-JSON2XLS-WORKER-THREAD**](https://corifeus.com/json2xls-worker-thread) Build v2026.4.132
[](https://www.npmjs.com/package/p3x-json2xls-worker-thread) [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [](https://www.patrikx3.com/en/front/contact) [](https://www.facebook.com/corifeus.software)
[//]: #@corifeus-footer:end