Skip to content

[Regression] Stream API fails to write XLSX files #150

@danieleds

Description

@danieleds

Since version 0.2.10, exceljs fails to write xlsx files using the stream API with the following error:

Unhandled rejection Error: append: input source must be valid Stream or Buffer instance
    at Archiver.append (/home/bugreport/backend/node_modules/archiver/lib/core.js:333:24)
    at /home/bugreport/backend/node_modules/exceljs/lib/stream/xlsx/workbook-writer.js:251:18
    at Promise._execute (/home/bugreport/backend/node_modules/bluebird/js/release/debuggability.js:272:9)
    at Promise._resolveFromExecutor (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:475:18)
    at new Promise (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:77:14)
    at Object.WorkbookWriter.addSharedStrings (/home/bugreport/backend/node_modules/exceljs/lib/stream/xlsx/workbook-writer.js:250:14)
    at /home/bugreport/backend/node_modules/exceljs/lib/stream/xlsx/workbook-writer.js:131:16
    at tryCatcher (/home/bugreport/backend/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:504:31)
    at Promise._settlePromise (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:561:18)
    at Promise._settlePromise0 (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:606:10)
    at Promise._settlePromises (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:685:18)
    at Promise._fulfill (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:630:18)
    at Promise._resolveCallback (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:447:14)
    at Promise._settlePromiseFromHandler (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:516:17)
    at Promise._settlePromise (/home/bugreport/backend/node_modules/bluebird/js/release/promise.js:561:18)

This is the code to reproduce the problem:

const fs = require('fs');
const Excel = require('exceljs');

let outStream = fs.createWriteStream('/tmp/aaa', {flags: 'w'})

let options = {
    stream: outStream,
    useStyles: true,
    useSharedStrings: true
};

let workbook = new Excel.stream.xlsx.WorkbookWriter(options);
let worksheet = workbook.addWorksheet('test');
let newrow = worksheet.addRow(['hello']);
newrow.commit();
worksheet.commit();
workbook.commit();

If you do not add any row, it works fine.
Also, worked fine on 0.2.9 and previous versions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions