@atomictech/xlsx-write-stream
Version:
Stream huge amount of data into an XLSX generated file stream with minimum memory footprint.
43 lines (31 loc) • 5.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _styles = require("./styles");
var _xmlEscape = _interopRequireDefault(require("xml-escape"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const isDate = d => d instanceof Date && !isNaN(d);
const isNumber = n => typeof n === 'number';
const isString = s => typeof s === 'string';
const isBoolean = b => b === !!b;
const isFormulaString = s => s.startsWith('=');
function _default(value, cell, format, styles) {
if (isDate(value)) {
return `<c r="${cell}" t="d" ${format ? `s="${styles.getStyleId(_styles.TypeStyleKey.DATE)}"` : ''}><v>${value.toISOString()}</v></c>`;
} else if (isString(value)) {
if (isFormulaString(value)) {
return `<c r="${cell}" t="str"><f>${(0, _xmlEscape.default)(value).substr(1)}</f></c>`;
}
return `<c r="${cell}" t="inlineStr" ${format ? `s="${styles.getStyleId(_styles.TypeStyleKey.TEXT)}"` : ''}><is><t>${(0, _xmlEscape.default)(value)}</t></is></c>`;
} else if (isBoolean(value)) {
return `<c r="${cell}" t="b"><v>${value ? 1 : 0}</v></c>`;
} else if (isNumber(value)) {
return `<c r="${cell}" t="n" ${format ? `s="${styles.getStyleId((0, _styles.getBestNumberTypeStyleKey)(value))}"` : ''}><v>${value}</v></c>`;
} else if (value) {
return `<c r="${cell}" t="inlineStr"><is><t>${(0, _xmlEscape.default)(`${value}`)}</t></is></c>`;
}
return '';
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZXMvY2VsbC5qcyJdLCJuYW1lcyI6WyJpc0RhdGUiLCJkIiwiRGF0ZSIsImlzTmFOIiwiaXNOdW1iZXIiLCJuIiwiaXNTdHJpbmciLCJzIiwiaXNCb29sZWFuIiwiYiIsImlzRm9ybXVsYVN0cmluZyIsInN0YXJ0c1dpdGgiLCJ2YWx1ZSIsImNlbGwiLCJmb3JtYXQiLCJzdHlsZXMiLCJnZXRTdHlsZUlkIiwiVHlwZVN0eWxlS2V5IiwiREFURSIsInRvSVNPU3RyaW5nIiwic3Vic3RyIiwiVEVYVCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7O0FBRUEsTUFBTUEsTUFBTSxHQUFHQyxDQUFDLElBQUlBLENBQUMsWUFBWUMsSUFBYixJQUFxQixDQUFDQyxLQUFLLENBQUNGLENBQUQsQ0FBL0M7O0FBQ0EsTUFBTUcsUUFBUSxHQUFHQyxDQUFDLElBQUksT0FBT0EsQ0FBUCxLQUFhLFFBQW5DOztBQUNBLE1BQU1DLFFBQVEsR0FBR0MsQ0FBQyxJQUFJLE9BQU9BLENBQVAsS0FBYSxRQUFuQzs7QUFDQSxNQUFNQyxTQUFTLEdBQUdDLENBQUMsSUFBSUEsQ0FBQyxLQUFLLENBQUMsQ0FBQ0EsQ0FBL0I7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHSCxDQUFDLElBQUlBLENBQUMsQ0FBQ0ksVUFBRixDQUFhLEdBQWIsQ0FBN0I7O0FBRWUsa0JBQVNDLEtBQVQsRUFBZ0JDLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0M7QUFDbkQsTUFBSWYsTUFBTSxDQUFDWSxLQUFELENBQVYsRUFBbUI7QUFDakIsV0FBUSxTQUFRQyxJQUFLLFdBQVVDLE1BQU0sR0FBSSxNQUFLQyxNQUFNLENBQUNDLFVBQVAsQ0FBa0JDLHFCQUFhQyxJQUEvQixDQUFxQyxHQUE5QyxHQUFtRCxFQUFHLE9BQU1OLEtBQUssQ0FBQ08sV0FBTixFQUFvQixVQUFySDtBQUNELEdBRkQsTUFFTyxJQUFJYixRQUFRLENBQUNNLEtBQUQsQ0FBWixFQUFxQjtBQUMxQixRQUFJRixlQUFlLENBQUNFLEtBQUQsQ0FBbkIsRUFBNEI7QUFDMUIsYUFBUSxTQUFRQyxJQUFLLGdCQUFlLHdCQUFVRCxLQUFWLEVBQWlCUSxNQUFqQixDQUF3QixDQUF4QixDQUEyQixVQUEvRDtBQUNEOztBQUNELFdBQVEsU0FBUVAsSUFBSyxtQkFBa0JDLE1BQU0sR0FBSSxNQUFLQyxNQUFNLENBQUNDLFVBQVAsQ0FBa0JDLHFCQUFhSSxJQUEvQixDQUFxQyxHQUE5QyxHQUFtRCxFQUFHLFdBQVUsd0JBQVVULEtBQVYsQ0FBaUIsZUFBOUg7QUFDRCxHQUxNLE1BS0EsSUFBSUosU0FBUyxDQUFDSSxLQUFELENBQWIsRUFBc0I7QUFDM0IsV0FBUSxTQUFRQyxJQUFLLGNBQWFELEtBQUssR0FBRyxDQUFILEdBQU8sQ0FBRSxVQUFoRDtBQUNELEdBRk0sTUFFQSxJQUFJUixRQUFRLENBQUNRLEtBQUQsQ0FBWixFQUFxQjtBQUMxQixXQUFRLFNBQVFDLElBQUssV0FBVUMsTUFBTSxHQUFJLE1BQUtDLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQix1Q0FBMEJKLEtBQTFCLENBQWxCLENBQW9ELEdBQTdELEdBQWtFLEVBQUcsT0FBTUEsS0FBTSxVQUF0SDtBQUNELEdBRk0sTUFFQSxJQUFJQSxLQUFKLEVBQVc7QUFDaEIsV0FBUSxTQUFRQyxJQUFLLDBCQUF5Qix3QkFBVyxHQUFFRCxLQUFNLEVBQW5CLENBQXNCLGVBQXBFO0FBQ0Q7O0FBQ0QsU0FBTyxFQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3R5bGVLZXksIGdldEJlc3ROdW1iZXJUeXBlU3R5bGVLZXkgfSBmcm9tICcuL3N0eWxlcyc7XG5pbXBvcnQgeG1sRXNjYXBlIGZyb20gJ3htbC1lc2NhcGUnO1xuXG5jb25zdCBpc0RhdGUgPSBkID0+IGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkKTtcbmNvbnN0IGlzTnVtYmVyID0gbiA9PiB0eXBlb2YgbiA9PT0gJ251bWJlcic7XG5jb25zdCBpc1N0cmluZyA9IHMgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnO1xuY29uc3QgaXNCb29sZWFuID0gYiA9PiBiID09PSAhIWI7XG5jb25zdCBpc0Zvcm11bGFTdHJpbmcgPSBzID0+IHMuc3RhcnRzV2l0aCgnPScpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSwgY2VsbCwgZm9ybWF0LCBzdHlsZXMpIHtcbiAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYDxjIHI9XCIke2NlbGx9XCIgdD1cImRcIiAke2Zvcm1hdCA/IGBzPVwiJHtzdHlsZXMuZ2V0U3R5bGVJZChUeXBlU3R5bGVLZXkuREFURSl9XCJgIDogJyd9Pjx2PiR7dmFsdWUudG9JU09TdHJpbmcoKX08L3Y+PC9jPmA7XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgaWYgKGlzRm9ybXVsYVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgPGMgcj1cIiR7Y2VsbH1cIiB0PVwic3RyXCI+PGY+JHt4bWxFc2NhcGUodmFsdWUpLnN1YnN0cigxKX08L2Y+PC9jPmA7XG4gICAgfVxuICAgIHJldHVybiBgPGMgcj1cIiR7Y2VsbH1cIiB0PVwiaW5saW5lU3RyXCIgJHtmb3JtYXQgPyBgcz1cIiR7c3R5bGVzLmdldFN0eWxlSWQoVHlwZVN0eWxlS2V5LlRFWFQpfVwiYCA6ICcnfT48aXM+PHQ+JHt4bWxFc2NhcGUodmFsdWUpfTwvdD48L2lzPjwvYz5gO1xuICB9IGVsc2UgaWYgKGlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gYDxjIHI9XCIke2NlbGx9XCIgdD1cImJcIj48dj4ke3ZhbHVlID8gMSA6IDB9PC92PjwvYz5gO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHVlKSkge1xuICAgIHJldHVybiBgPGMgcj1cIiR7Y2VsbH1cIiB0PVwiblwiICR7Zm9ybWF0ID8gYHM9XCIke3N0eWxlcy5nZXRTdHlsZUlkKGdldEJlc3ROdW1iZXJUeXBlU3R5bGVLZXkodmFsdWUpKX1cImAgOiAnJ30+PHY+JHt2YWx1ZX08L3Y+PC9jPmA7XG4gIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gYDxjIHI9XCIke2NlbGx9XCIgdD1cImlubGluZVN0clwiPjxpcz48dD4ke3htbEVzY2FwZShgJHt2YWx1ZX1gKX08L3Q+PC9pcz48L2M+YDtcbiAgfVxuICByZXR1cm4gJyc7XG59XG4iXX0=
;