diff --git a/lib/stream/xlsx/worksheet-reader.js b/lib/stream/xlsx/worksheet-reader.js index abb4c76f2..8ad59d3d3 100644 --- a/lib/stream/xlsx/worksheet-reader.js +++ b/lib/stream/xlsx/worksheet-reader.js @@ -321,7 +321,7 @@ class WorksheetReader extends EventEmitter { default: if (utils.isDateFmt(cell.numFmt)) { - cell.value = utils.excelToDate(parseFloat(c.v.text), properties.model.date1904); + cell.value = utils.excelToDate(parseFloat(c.v.text), properties.model && properties.model.date1904); } else { cell.value = parseFloat(c.v.text); } diff --git a/spec/integration/data/dateIssue.xlsx b/spec/integration/data/dateIssue.xlsx new file mode 100644 index 000000000..342122e2c Binary files /dev/null and b/spec/integration/data/dateIssue.xlsx differ diff --git a/spec/integration/issues/issue-1328-xlsx-worksheet-reader-date.spec.js b/spec/integration/issues/issue-1328-xlsx-worksheet-reader-date.spec.js new file mode 100644 index 000000000..2337fc790 --- /dev/null +++ b/spec/integration/issues/issue-1328-xlsx-worksheet-reader-date.spec.js @@ -0,0 +1,20 @@ +const ExcelJS = verquire('exceljs'); +const fs = require('fs'); + + +describe('github issues: Date field with cache style', () => { + const rows = []; + beforeEach(() => + new Promise((resolve, reject) => { + const workbookReader = new ExcelJS.stream.xlsx.WorkbookReader(fs.createReadStream('./spec/integration/data/dateIssue.xlsx'), { worksheets: 'emit', styles: 'cache', sharedStrings: 'cache', hyperlinks: 'ignore', entries: 'ignore' }); + workbookReader.read(); + workbookReader.on('worksheet', worksheet => worksheet.on('row', row => rows.push(row.values[1]))); + workbookReader.on('end', resolve); + workbookReader.on('error', reject); + + }) + ); + it('issue 1328 - should emit row with Date Object', () => { + expect(rows).that.deep.equals(['Date', new Date('2020-11-20T00:00:00.000Z')]); + }); +});