Can't add cell comment using streaming WorkbookWriter
quex46 opened this issue · comments
Artem Bronitsky commented
By using streaming WorkbookWriter I'm getting error if I try to add cell comment.
exceljs v1.12.2
nodejs v10.11.0
Here is the minimal snippet to implement the issue:
const Excel = require('exceljs/modern.nodejs');
const workbook = new Excel.stream.xlsx.WorkbookWriter({ filename: '/tmp/exported.xlsx' });
const sheet = workbook.addWorksheet('Sheet 1');
sheet.addRow(['First column value']);
sheet.getCell('A1').note = 'Hello World!'; // This fails
workbook
.commit()
.then(() => { console.log('Done!'); });
result:
/home/user/Documents/project/node_modules/exceljs/lib/xlsx/xform/sheet/cell-xform.js:64
options.comments.push({ ...model.comment, ref: model.address });
^
TypeError: Cannot read property 'push' of undefined
at module.exports.prepare (/home/user/Documents/project/node_modules/exceljs/lib/xlsx/xform/sheet/cell-xform.js:64:24)
at model.cells.forEach.cellModel (/home/user/Documents/project/node_modules/exceljs/lib/xlsx/xform/sheet/row-xform.js:26:17)
at Array.forEach (<anonymous>)
at RowXform.prepare (/home/user/Documents/project/node_modules/exceljs/lib/xlsx/xform/sheet/row-xform.js:25:17)
at module.exports._writeRow (/home/user/Documents/project/node_modules/exceljs/lib/stream/xlsx/worksheet-writer.js:495:17)
at module.exports._commitRow (/home/user/Documents/project/node_modules/exceljs/lib/stream/xlsx/worksheet-writer.js:332:14)
at Row.commit (/home/user/Documents/project/node_modules/exceljs/lib/doc/row.js:30:21)
at Object.<anonymous> (/home/user/Documents/project/services/data_export/issue.js:36:46)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:279:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:752:3)
Switching from streaming to another method resolves the issue.
const Excel = require('exceljs/modern.nodejs');
const workbook = new Excel.Workbook();
const sheet = workbook.addWorksheet('Sheet 1');
sheet.addRow(['First column value']);
sheet.getCell('A1').note = 'Hello World!'; // It works!
workbook.xlsx
.writeFile('/tmp/exported.xlsx')
.then(() => { console.log('Done!'); });
brunoargolo commented
+1
brunoargolo commented
Opened a PR for that: #911
Guyon Roche commented
Published in v3.1.0 ( thanks @brunoargolo )