@atomictech/xlsx-write-stream
Version:
Stream huge amount of data into an XLSX generated file stream with minimum memory footprint.
51 lines (43 loc) • 4.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _stream = require("stream");
var _templates = require("./templates");
/**
* Class representing a XLSX Row transformation from array to Row.
*/
class XLSXRowTransform extends _stream.Transform {
/**
* Create new xlsx row transform stream
* @param {Object} [options]
* @param {Boolean} [options.header=false] - If set to true writer will output first row with an header style.
* @param {Boolean} [options.format=true] - If set to false writer will not format cells with number, date, boolean and text.
* @param {Styles} [options.styles=new Styles()] - If set you can overwrite default standard type styles by other standard ones or even define custom `formatCode`.
*/
constructor({
header = false,
format = true,
styles = new _templates.Styles()
}) {
super({
objectMode: true
});
this.rowCount = 0;
this.header = header;
this.format = format;
this.styles = styles;
if (this.header) throw new Error('Header special style output not yet implemented.');
}
/**
* Transform array to row string
*/
_transform(row, encoding, callback) {
const xlsxRow = (0, _templates.Row)(this.rowCount, row, this.format, this.styles);
this.rowCount++;
callback(null, xlsxRow);
}
}
exports.default = XLSXRowTransform;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9YTFNYUm93VHJhbnNmb3JtLmpzIl0sIm5hbWVzIjpbIlhMU1hSb3dUcmFuc2Zvcm0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsImhlYWRlciIsImZvcm1hdCIsInN0eWxlcyIsIlN0eWxlcyIsIm9iamVjdE1vZGUiLCJyb3dDb3VudCIsIkVycm9yIiwiX3RyYW5zZm9ybSIsInJvdyIsImVuY29kaW5nIiwiY2FsbGJhY2siLCJ4bHN4Um93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ2UsTUFBTUEsZ0JBQU4sU0FBK0JDLGlCQUEvQixDQUF5QztBQUN0RDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFQyxFQUFBQSxXQUFXLENBQUM7QUFBRUMsSUFBQUEsTUFBTSxHQUFHLEtBQVg7QUFBa0JDLElBQUFBLE1BQU0sR0FBRyxJQUEzQjtBQUFpQ0MsSUFBQUEsTUFBTSxHQUFHLElBQUlDLGlCQUFKO0FBQTFDLEdBQUQsRUFBMkQ7QUFDcEUsVUFBTTtBQUFFQyxNQUFBQSxVQUFVLEVBQUU7QUFBZCxLQUFOO0FBRUEsU0FBS0MsUUFBTCxHQUFnQixDQUFoQjtBQUNBLFNBQUtMLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDtBQUVBLFFBQUksS0FBS0YsTUFBVCxFQUFpQixNQUFNLElBQUlNLEtBQUosQ0FBVSxrREFBVixDQUFOO0FBQ2xCO0FBRUQ7QUFDRjtBQUNBOzs7QUFDRUMsRUFBQUEsVUFBVSxDQUFDQyxHQUFELEVBQU1DLFFBQU4sRUFBZ0JDLFFBQWhCLEVBQTBCO0FBQ2xDLFVBQU1DLE9BQU8sR0FBRyxvQkFBSSxLQUFLTixRQUFULEVBQW1CRyxHQUFuQixFQUF3QixLQUFLUCxNQUE3QixFQUFxQyxLQUFLQyxNQUExQyxDQUFoQjtBQUNBLFNBQUtHLFFBQUw7QUFDQUssSUFBQUEsUUFBUSxDQUFDLElBQUQsRUFBT0MsT0FBUCxDQUFSO0FBQ0Q7O0FBMUJxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zZm9ybSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBSb3csIFN0eWxlcyB9IGZyb20gJy4vdGVtcGxhdGVzJztcblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgYSBYTFNYIFJvdyB0cmFuc2Zvcm1hdGlvbiBmcm9tIGFycmF5IHRvIFJvdy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWExTWFJvd1RyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHhsc3ggcm93IHRyYW5zZm9ybSBzdHJlYW1cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmhlYWRlcj1mYWxzZV0gLSBJZiBzZXQgdG8gdHJ1ZSB3cml0ZXIgd2lsbCBvdXRwdXQgZmlyc3Qgcm93IHdpdGggYW4gaGVhZGVyIHN0eWxlLlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmZvcm1hdD10cnVlXSAtIElmIHNldCB0byBmYWxzZSB3cml0ZXIgd2lsbCBub3QgZm9ybWF0IGNlbGxzIHdpdGggbnVtYmVyLCBkYXRlLCBib29sZWFuIGFuZCB0ZXh0LlxuICAgKiBAcGFyYW0ge1N0eWxlc30gW29wdGlvbnMuc3R5bGVzPW5ldyBTdHlsZXMoKV0gLSBJZiBzZXQgeW91IGNhbiBvdmVyd3JpdGUgZGVmYXVsdCBzdGFuZGFyZCB0eXBlIHN0eWxlcyBieSBvdGhlciBzdGFuZGFyZCBvbmVzIG9yIGV2ZW4gZGVmaW5lIGN1c3RvbSBgZm9ybWF0Q29kZWAuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7IGhlYWRlciA9IGZhbHNlLCBmb3JtYXQgPSB0cnVlLCBzdHlsZXMgPSBuZXcgU3R5bGVzKCkgfSkge1xuICAgIHN1cGVyKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucm93Q291bnQgPSAwO1xuICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xuICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xuICAgIHRoaXMuc3R5bGVzID0gc3R5bGVzO1xuXG4gICAgaWYgKHRoaXMuaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoJ0hlYWRlciBzcGVjaWFsIHN0eWxlIG91dHB1dCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhcnJheSB0byByb3cgc3RyaW5nXG4gICAqL1xuICBfdHJhbnNmb3JtKHJvdywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgeGxzeFJvdyA9IFJvdyh0aGlzLnJvd0NvdW50LCByb3csIHRoaXMuZm9ybWF0LCB0aGlzLnN0eWxlcyk7XG4gICAgdGhpcy5yb3dDb3VudCsrO1xuICAgIGNhbGxiYWNrKG51bGwsIHhsc3hSb3cpO1xuICB9XG59XG4iXX0=
;