forked from LuisEnMarroquin/json-as-xlsx
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
58 lines (53 loc) · 1.58 KB
/
Copy pathserver.js
File metadata and controls
58 lines (53 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const { writeFileSync } = require('fs')
const xlsx = require('./index.js')
const express = require('express')
const app = express()
const port = 7070
let data = [
{
sheet: 'Adults',
columns: [
{ label: 'User', value: 'user' }, // Top level data
{ label: 'Age', value: row => (row.age + ' years') }, // Run functions
{ label: 'Phone', value: row => (row.more ? row.more.phone || '' : '') }, // Deep props
],
content: [
{ user: 'Andrea', age: 20, more: { phone: '11111111' } },
{ user: 'Luis', age: 21, more: { phone: '12345678' } }
]
}, {
sheet: 'Children',
columns: [
{ label: 'User', value: 'user' }, // Top level data
{ label: 'Age', value: row => (row.age + ' years') }, // Run functions
{ label: 'Phone', value: row => (row.more ? row.more.phone || '' : '') }, // Deep props
],
content: [
{ user: 'Manuel', age: 16, more: { phone: '99999999' } },
{ user: 'Ana', age: 17, more: { phone: '87654321' } }
]
}
]
let settings = {
writeOptions: {
type: 'buffer',
bookType: 'xlsx'
}
}
app.get('/', (_, res) => {
let buffer = xlsx(data, settings)
res.writeHead(200, {
'Content-Type': 'application/octet-stream',
'Content-disposition': `attachment; filename=MySheet.xlsx`
})
res.end(buffer)
})
app.get('/local', (_, res) => {
let buffer = xlsx(data, settings)
const homedir = require('os').homedir()
writeFileSync(`${homedir}/MySheet.xlsx`, buffer)
res.status(200).send('xd')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})