Skip to content

Commit

Permalink
Fix rawNumber support inside sheet_to_json
Browse files Browse the repository at this point in the history
  • Loading branch information
delesseps committed Mar 20, 2022
1 parent 69bb1e7 commit a5b3877
Show file tree
Hide file tree
Showing 11 changed files with 1,104 additions and 1,285 deletions.
2 changes: 1 addition & 1 deletion bits/90_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Ar
else if(raw && v === null) row[hdr[C]] = null;
else continue;
} else {
row[hdr[C]] = raw || (o.rawNumbers && val.t == "n") ? v : format_cell(val,v,o);
row[hdr[C]] = raw && (val.t !== "n" || (val.t === "n" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);
}
if(v != null) isempty = false;
}
Expand Down
16 changes: 16 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,8 @@ var paths = {
dtxlsx: dir + 'xlsx-stream-d-date-cell.xlsx',
dtxlsb: dir + 'xlsx-stream-d-date-cell.xlsb',

dtfxlsx: dir + 'DataTypesFormats.xlsx',

fstxls: dir + 'formula_stress_test.xls',
fstxml: dir + 'formula_stress_test.xls.xml',
fstxlsx: dir + 'formula_stress_test.xlsx',
Expand Down Expand Up @@ -1381,6 +1383,20 @@ describe('parse features', function() {
});
});
});

describe('data types formats', function() {[
['xlsx', paths.dtfxlsx],
].forEach(function(m) { it(m[0], function() {
var wb = X.read(fs.readFileSync(m[1]), {type: TYPE, cellDates: true});
var ws = wb.Sheets[wb.SheetNames[0]];
var data = X.utils.sheet_to_json(ws, { header: 1, raw: true, rawNumbers: false });
assert(data[0][1] instanceof Date);
assert(data[1][1] instanceof Date);
assert.equal(data[2][1], '$123.00');
assert.equal(data[3][1], '98.76%');
assert.equal(data[4][1], '456.00');
assert.equal(data[5][1], '7,890');
}); }); });
});

describe('write features', function() {
Expand Down
16 changes: 16 additions & 0 deletions test.mjs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 17 additions & 1 deletion test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ var paths: any = {
dtxlsx: dir + 'xlsx-stream-d-date-cell.xlsx',
dtxlsb: dir + 'xlsx-stream-d-date-cell.xlsb',

dtfxlsx: dir + 'DataTypesFormats.xlsx',

fstxls: dir + 'formula_stress_test.xls',
fstxml: dir + 'formula_stress_test.xls.xml',
fstxlsx: dir + 'formula_stress_test.xlsx',
Expand Down Expand Up @@ -951,7 +953,7 @@ Deno.test('parse features', async function(t) {
X.read(fs.readFileSync(paths.cpxml), {type:TYPE, WTF:true})
];

var s1 = ['XLSX', 'XLSB', 'XLS', 'XML']; for(var i = 0; i < s1.length; ++i) { let x = s1[i];
var s1 = ['XLSX', 'XLSB', 'XLS', 'XML']; for(var i = 0; i < s1.length; ++i) { let x = s1[i];
await t.step(x + ' should parse core properties', async function(t) { var P = wbs?.[i]?.Props; if(typeof P == "undefined") throw "missing props"; coreprop(P); });
await t.step(x + ' should parse custom properties', async function(t) { custprop(wbs?.[i]?.Custprops); });
}
Expand Down Expand Up @@ -1335,6 +1337,20 @@ Deno.test('parse features', async function(t) {
});
});
});

await t.step('data types formats', async function(t) {var dtf = [
['xlsx', paths.dtfxlsx]
]; for(var j = 0; j < dtf.length; ++j) { var m = dtf[j]; await t.step(m[0], async function(t) {
var wb = X.read(fs.readFileSync(m[1]), {type: TYPE, cellDates: true});
var ws = wb.Sheets[wb.SheetNames[0]];
var data = X.utils.sheet_to_json<any>(ws, { header: 1, raw: true, rawNumbers: false });
assert.assert(data[0][1] instanceof Date);
assert.assert(data[1][1] instanceof Date);
assert.equal(data[2][1], '$123.00');
assert.equal(data[3][1], '98.76%');
assert.equal(data[4][1], '456.00');
assert.equal(data[5][1], '7,890');
}); } });
});

Deno.test('write features', async function(t) {
Expand Down
1 change: 1 addition & 0 deletions tests.lst
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ text_and_numbers.xlsb
time_stress_test_1.xlsb.pending
xlsx-stream-d-date-cell.xlsb
AutoFilter.xlsx
DataTypesFormats.xlsx
ErrorTypes.xlsx
LONumbers-2010.xlsx
LONumbers-2011.xlsx
Expand Down
16 changes: 16 additions & 0 deletions tests/core.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions tests/fixtures.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions tests/fixtures.lst
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
./test_files/column_width.xlsb
./test_files/column_width.slk
./test_files/cross-sheet_formula_names.xlsb
./test_files/DataTypesFormats.xlsx
./test_files/defined_names_simple.xls
./test_files/defined_names_simple.xml
./test_files/defined_names_simple.xlsx
Expand Down
Loading

0 comments on commit a5b3877

Please sign in to comment.