Skip to content

Commit 3dfcc66

Browse files
authored
Merge pull request #41 from brunoargolo/feature/support-1904-date-format
feature/support-1904-date-format
2 parents c7cc341 + 47fbb2b commit 3dfcc66

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed

lib/workbook.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ function XlsxStreamReaderWorkBook (options) {
4545
workBookInfo: {
4646
value: {
4747
sheetRelationships: {},
48-
sheetRelationshipsNames: {}
48+
sheetRelationshipsNames: {},
49+
date1904: false
4950
},
5051
writable: true,
5152
enumerable: false
@@ -344,6 +345,8 @@ XlsxStreamReaderWorkBook.prototype._parseWorkBookInfo = function (nodeData) {
344345
nodeData.forEach(function (data) {
345346
if (data.name === 'sheet') {
346347
self.workBookInfo.sheetRelationshipsNames[data.attributes['r:id']] = data.attributes.name
348+
} else if (data.name === 'workbookPr' && data.attributes && data.attributes.date1904 === '1') {
349+
self.workBookInfo.date1904 = true
347350
}
348351
})
349352
}

lib/worksheet.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -248,17 +248,18 @@ XlsxStreamReaderWorkSheet.prototype._handleWorkSheetNode = function (nodeData) {
248248
if (self.options.formatting && workingVal) {
249249
if (self.workBook.hasFormatCodes) {
250250
var formatId = workingCell.attributes.s ? self.workBook.xfs[workingCell.attributes.s].attributes.numFmtId : 0
251+
var date1904 = self.workBook.workBookInfo.date1904
251252
if (typeof formatId !== 'undefined') {
252253
var format = self.workBook.formatCodes[formatId]
253254
if (typeof format === 'undefined') {
254255
try {
255-
workingVal = ssf.format(Number(formatId), Number(workingVal))
256+
workingVal = ssf.format(Number(formatId), Number(workingVal), { date1904 })
256257
} catch (e) {
257258
workingVal = ''
258259
}
259260
} else if (format !== 'General') {
260261
try {
261-
workingVal = ssf.format(format, Number(workingVal))
262+
workingVal = ssf.format(format, Number(workingVal), { date1904 })
262263
} catch (e) {
263264
workingVal = ''
264265
}

test/date1904.xlsx

8.2 KB
Binary file not shown.

test/test.js

+15
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,21 @@ describe('The xslx stream parser', function () {
4949
workSheetReader.process()
5050
})
5151
})
52+
it('supports date formate 1904', function (done) {
53+
var workBookReader = new XlsxStreamReader()
54+
fs.createReadStream(path.join(__dirname, 'date1904.xlsx')).pipe(workBookReader)
55+
const rows = []
56+
workBookReader.on('worksheet', function (workSheetReader) {
57+
workSheetReader.on('end', function () {
58+
assert(rows[1][2] === '27/09/1986')
59+
done()
60+
})
61+
workSheetReader.on('row', function (r) {
62+
rows.push(r.values)
63+
})
64+
workSheetReader.process()
65+
})
66+
})
5267
it('catches zip format errors', function (done) {
5368
var workBookReader = new XlsxStreamReader()
5469
fs.createReadStream(path.join(__dirname, 'notanxlsx')).pipe(workBookReader)

0 commit comments

Comments
 (0)