Skip to content

Instantly share code, notes, and snippets.

@darkterminal
Forked from davidcsejtei/exportService.js
Created February 8, 2023 21:23
Show Gist options
  • Save darkterminal/a97e9d76cc6f4784a9ce8981bb021402 to your computer and use it in GitHub Desktop.
Save darkterminal/a97e9d76cc6f4784a9ce8981bb021402 to your computer and use it in GitHub Desktop.

Revisions

  1. @davidcsejtei davidcsejtei created this gist Oct 21, 2020.
    22 changes: 22 additions & 0 deletions exportService.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    const xlsx = require('xlsx');
    const path = require('path');

    const exportExcel = (data, workSheetColumnNames, workSheetName, filePath) => {
    const workBook = xlsx.utils.book_new();
    const workSheetData = [
    workSheetColumnNames,
    ... data
    ];
    const workSheet = xlsx.utils.aoa_to_sheet(workSheetData);
    xlsx.utils.book_append_sheet(workBook, workSheet, workSheetName);
    xlsx.writeFile(workBook, path.resolve(filePath));
    }

    const exportUsersToExcel = (users, workSheetColumnNames, workSheetName, filePath) => {
    const data = users.map(user => {
    return [user.id, user.name, user.age];
    });
    exportExcel(data, workSheetColumnNames, workSheetName, filePath);
    }

    module.exports = exportUsersToExcel;
    25 changes: 25 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    const exportUsersToExcel = require('./exportService');

    const users = [
    {
    id: 0,
    name: 'Peter',
    age: 31
    },
    {
    id: 1,
    name: 'John',
    age: 23
    }
    ];

    const workSheetColumnName = [
    "ID",
    "Name",
    "Age"
    ]

    const workSheetName = 'Users';
    const filePath = './outputFiles/excel-from-js.xlsx';

    exportUsersToExcel(users, workSheetColumnName, workSheetName, filePath);