forked from sheetjs/sheetjs
Parse DIF-esque CSV (fixes #3230 h/t @lowkeyfish)
This commit is contained in:
parent
36debb0eaa
commit
2d6c821261
@ -7,6 +7,7 @@ changes may not be included if they are not expected to break existing code.
|
||||
* Sheet Visibility for ODS / FODS (h/t @edemaine)
|
||||
* HTML DOM ingress support formulae (`data-f`)
|
||||
* Proper handling of XLSX encoded entities (h/t @inreoh)
|
||||
* Proper handling of invalid DIF sheets that match heuristics (h/t @lowkeyfish)
|
||||
|
||||
## v0.20.3
|
||||
|
||||
|
@ -1138,3 +1138,17 @@ function read_wb_ID(d, opts) {
|
||||
}
|
||||
}
|
||||
|
||||
function read_wb_TABL(d, opts) {
|
||||
var o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;
|
||||
try {
|
||||
var out = DIF.to_workbook(d, o);
|
||||
if(!out || !out.Sheets) throw "DIF bad workbook";
|
||||
var ws = out.Sheets[out.SheetNames[0]];
|
||||
if(!ws || !ws["!ref"]) throw "DIF empty worksheet";
|
||||
o.WTF = OLD_WTF;
|
||||
return out;
|
||||
} catch(e) {
|
||||
o.WTF = OLD_WTF;
|
||||
return PRN.to_workbook(d, opts);
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ function readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {
|
||||
if(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error("TIFF Image File is not a spreadsheet");
|
||||
if(n[1] === 0x44) return read_wb_ID(d, o);
|
||||
break;
|
||||
case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;
|
||||
case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return read_wb_TABL(d, o); break;
|
||||
case 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);
|
||||
case 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);
|
||||
case 0xFF:
|
||||
|
Loading…
Reference in New Issue
Block a user