Запись данных в файл Excel с node js - PullRequest
0 голосов
/ 10 января 2020

Я создал Rest API с каркасом express, который содержит маршрут для экспорта данных. Данные, которые должны быть экспортированы в файл Excel, хранятся в нескольких массивах. Файл Excel должен иметь предопределенную структуру / стиль.

Я не ограничен определенным форматом файла, если его можно открыть в Microsoft Excel. Есть ли какие-либо рекомендации для использования?

В общем, как мне достичь этой цели. Нужно ли сопоставлять каждую запись массивов определенной ячейке в файле Excel? Как я могу стилизовать / отформатировать файл Excel с node js?

Пожалуйста, дайте мне общее представление о том, как решить эту задачу. Я очень благодарен за вашу помощь!

Редактировать:

Я нашел модуль узла excel4node. Подходит ли для этой задачи или есть лучшие подвиги?

1 Ответ

0 голосов
/ 10 января 2020

Excel4Node довольно хорош, я нашел, что это очень полезно для создания документов Excel, API очень гибок, легко записывать объекты / массивы в файл, стилизовать его и сохранять.

Стилизация очень проста, вы можете создавать объекты стиля и применять их к ячейкам, опять же, это очень гибко.

Например:

const excel = require("excel4node");

const workbook = new excel.Workbook();

const style = workbook.createStyle({
    font: { color: "#0101FF", size: 11 }
});

const worksheet = workbook.addWorksheet("Sheet 1");

const arrayToWrite = Array.from({length: 10}, (v, k) => [`Row ${k+1}, Col 1`,`Row ${k+1}, Col 2`]);
arrayToWrite.forEach((row, rowIndex) => {
    row.forEach((entry, colIndex) => { 
        worksheet.cell(rowIndex + 1, colIndex + 1).string(entry).style(style); 
    })
})

workbook.write("text.xlsx");

Существует также Xlsx хотя я нахожу это более полезным для разбора, чем для создания файла. Он также будет работать в браузере.

Чтобы создать электронную таблицу в памяти, затем разрешите клиенту загрузить:

const express = require("express");
const port = 8000;
const app = express();
const stream = require("stream");
const excel = require("excel4node");

function createTestWorkbook() {
    const workbook = new excel.Workbook();
    const style = workbook.createStyle({
        font: { color: "#0101FF", size: 11 }
    });

    const worksheet = workbook.addWorksheet("Sheet 1");

    const arrayToWrite = Array.from({length: 10}, (v, k) => [`Row ${k+1}, Col 1`,`Row ${k+1}, Col 2`]);
    arrayToWrite.forEach((row, rowIndex) => {
        row.forEach((entry, colIndex) => { 
            worksheet.cell(rowIndex + 1, colIndex + 1).string(entry).style(style); 
        })
    })

    return workbook;
}

/* Allow client to download spreadsheet. */
app.get('/get-spreadsheet', (req, res) => {
    let workbook = createTestWorkbook();
    workbook.write('workbook.xlsx', res);
});

app.listen(port);
console.log(`Serving at http://localhost:${port}`);

Для этого необходимо выполнить

npm install express

Затем запустите сценарий и перейдите к http://localhost: 8000 / get-spreadsheet /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...