forked from sheetjs/sheetjs
version bump 0.10.8
- TS definition removed DOM references (fixes #724 h/t @shaunc) - extendscript inconsistent processing of bitwise ops - updated browser tests
This commit is contained in:
parent
d28cc872c7
commit
6a913d3a7b
@ -1 +1 @@
|
|||||||
XLSX.version = '0.10.7';
|
XLSX.version = '0.10.8';
|
||||||
|
@ -86,7 +86,7 @@ var utf8read/*:StringConv*/ = function utf8reada(orig) {
|
|||||||
c = orig.charCodeAt(i++);
|
c = orig.charCodeAt(i++);
|
||||||
if (c < 128) { out += String.fromCharCode(c); continue; }
|
if (c < 128) { out += String.fromCharCode(c); continue; }
|
||||||
d = orig.charCodeAt(i++);
|
d = orig.charCodeAt(i++);
|
||||||
if (c>191 && c<224) { out += String.fromCharCode(((c & 31) << 6) | (d & 63)); continue; }
|
if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }
|
||||||
e = orig.charCodeAt(i++);
|
e = orig.charCodeAt(i++);
|
||||||
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
||||||
f = orig.charCodeAt(i++);
|
f = orig.charCodeAt(i++);
|
||||||
|
@ -41,6 +41,7 @@ function parse_ext_props(data, p) {
|
|||||||
case "Worksheets":
|
case "Worksheets":
|
||||||
case "工作表":
|
case "工作表":
|
||||||
case "Листы":
|
case "Листы":
|
||||||
|
case "أوراق العمل":
|
||||||
case "ワークシート":
|
case "ワークシート":
|
||||||
case "גליונות עבודה":
|
case "גליונות עבודה":
|
||||||
case "Arbeitsblätter":
|
case "Arbeitsblätter":
|
||||||
|
@ -42,7 +42,7 @@ function parse_clrScheme(t, themes, opts) {
|
|||||||
case '<a:accent6>': case '</a:accent6>':
|
case '<a:accent6>': case '</a:accent6>':
|
||||||
case '<a:hlink>': case '</a:hlink>':
|
case '<a:hlink>': case '</a:hlink>':
|
||||||
case '<a:folHlink>': case '</a:folHlink>':
|
case '<a:folHlink>': case '</a:folHlink>':
|
||||||
if (y[0][1] === '/') {
|
if (y[0].charAt(1) === '/') {
|
||||||
themes.themeElements.clrScheme.push(color);
|
themes.themeElements.clrScheme.push(color);
|
||||||
color = {};
|
color = {};
|
||||||
} else {
|
} else {
|
||||||
|
@ -364,7 +364,9 @@ return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {
|
|||||||
cf = styles.CellXf[tag.s];
|
cf = styles.CellXf[tag.s];
|
||||||
if(cf != null) {
|
if(cf != null) {
|
||||||
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
||||||
if(opts.cellStyles && cf.fillId != null) fillid = cf.fillId;
|
if(opts.cellStyles) {
|
||||||
|
if(cf.fillId != null) fillid = cf.fillId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
safe_format(p, fmtid, fillid, opts, themes, styles);
|
safe_format(p, fmtid, fillid, opts, themes, styles);
|
||||||
|
@ -477,7 +477,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles)/*:Worksheet*/ {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0001: /* 'BrtCellBlank' */
|
case 0x0001: /* 'BrtCellBlank' */
|
||||||
if(!opts.sheetStubs) break;
|
if(!opts.sheetStubs || pass) break;
|
||||||
p = ({t:'z',v:undefined}/*:any*/);
|
p = ({t:'z',v:undefined}/*:any*/);
|
||||||
C = val[0].c;
|
C = val[0].c;
|
||||||
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
||||||
@ -543,6 +543,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles)/*:Worksheet*/ {
|
|||||||
s['!margins'] = val;
|
s['!margins'] = val;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x01E5: /* 'BrtWsFmtInfo' */
|
||||||
/* case 'BrtUid' */
|
/* case 'BrtUid' */
|
||||||
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
||||||
case 0x0284: /* 'BrtActiveX' */
|
case 0x0284: /* 'BrtActiveX' */
|
||||||
@ -595,7 +596,6 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles)/*:Worksheet*/ {
|
|||||||
case 0x00AA: /* 'BrtTop10Filter' */
|
case 0x00AA: /* 'BrtTop10Filter' */
|
||||||
case 0x0032: /* 'BrtValueMeta' */
|
case 0x0032: /* 'BrtValueMeta' */
|
||||||
case 0x0816: /* 'BrtWebExtension' */
|
case 0x0816: /* 'BrtWebExtension' */
|
||||||
case 0x01E5: /* 'BrtWsFmtInfo' */
|
|
||||||
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
||||||
case 0x0093: /* 'BrtWsProp' */
|
case 0x0093: /* 'BrtWsProp' */
|
||||||
break;
|
break;
|
||||||
|
@ -139,6 +139,9 @@ function parse_wb_xml(data, opts)/*:WorkbookFile*/ {
|
|||||||
case '<AlternateContent': pass=true; break;
|
case '<AlternateContent': pass=true; break;
|
||||||
case '</AlternateContent>': pass=false; break;
|
case '</AlternateContent>': pass=false; break;
|
||||||
|
|
||||||
|
/* TODO */
|
||||||
|
case '<revisionPtr': break;
|
||||||
|
|
||||||
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
||||||
}
|
}
|
||||||
return x;
|
return x;
|
||||||
|
@ -100,6 +100,9 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
supbooks.SheetNames.push(val.name);
|
supbooks.SheetNames.push(val.name);
|
||||||
wb.Sheets.push(val); break;
|
wb.Sheets.push(val); break;
|
||||||
|
|
||||||
|
case 0x0099: /* 'BrtWbProp' */
|
||||||
|
wb.WBProps = val; break;
|
||||||
|
|
||||||
case 0x0027: /* 'BrtName' */
|
case 0x0027: /* 'BrtName' */
|
||||||
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
||||||
delete val.Ptg;
|
delete val.Ptg;
|
||||||
@ -107,8 +110,13 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
break;
|
break;
|
||||||
case 0x040C: /* 'BrtNameExt' */ break;
|
case 0x040C: /* 'BrtNameExt' */ break;
|
||||||
|
|
||||||
case 0x0099: /* 'BrtWbProp' */
|
case 0x0165: /* 'BrtSupSelf' */
|
||||||
wb.WBProps = val; break;
|
case 0x0166: /* 'BrtSupSame' */
|
||||||
|
case 0x0163: /* 'BrtSupBookSrc' */
|
||||||
|
case 0x029B: /* 'BrtSupAddin' */
|
||||||
|
case 0x016A: /* 'BrtExternSheet' */
|
||||||
|
case 0x0169: /* 'BrtPlaceholderName' */
|
||||||
|
break;
|
||||||
|
|
||||||
/* case 'BrtModelTimeGroupingCalcCol' */
|
/* case 'BrtModelTimeGroupingCalcCol' */
|
||||||
/* case 'BrtRevisionPtr' */
|
/* case 'BrtRevisionPtr' */
|
||||||
@ -120,7 +128,6 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
case 0x009D: /* 'BrtCalcProp' */
|
case 0x009D: /* 'BrtCalcProp' */
|
||||||
case 0x0262: /* 'BrtCrashRecErr' */
|
case 0x0262: /* 'BrtCrashRecErr' */
|
||||||
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
||||||
case 0x016A: /* 'BrtExternSheet' */
|
|
||||||
case 0x009B: /* 'BrtFileRecover' */
|
case 0x009B: /* 'BrtFileRecover' */
|
||||||
case 0x0224: /* 'BrtFileSharing' */
|
case 0x0224: /* 'BrtFileSharing' */
|
||||||
case 0x02A4: /* 'BrtFileSharingIso' */
|
case 0x02A4: /* 'BrtFileSharingIso' */
|
||||||
@ -130,12 +137,7 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
case 0x084D: /* 'BrtModelTable' */
|
case 0x084D: /* 'BrtModelTable' */
|
||||||
case 0x0225: /* 'BrtOleSize' */
|
case 0x0225: /* 'BrtOleSize' */
|
||||||
case 0x0805: /* 'BrtPivotTableRef' */
|
case 0x0805: /* 'BrtPivotTableRef' */
|
||||||
case 0x0169: /* 'BrtPlaceholderName' */
|
|
||||||
case 0x0254: /* 'BrtSmartTagType' */
|
case 0x0254: /* 'BrtSmartTagType' */
|
||||||
case 0x029B: /* 'BrtSupAddin' */
|
|
||||||
case 0x0163: /* 'BrtSupBookSrc' */
|
|
||||||
case 0x0166: /* 'BrtSupSame' */
|
|
||||||
case 0x0165: /* 'BrtSupSelf' */
|
|
||||||
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
||||||
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
||||||
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
||||||
|
@ -288,7 +288,7 @@ var XLSBRecordEnum = {
|
|||||||
/*::[*/0x0160/*::]*/: { n:"BrtListTrFmla", f:parsenoop },
|
/*::[*/0x0160/*::]*/: { n:"BrtListTrFmla", f:parsenoop },
|
||||||
/*::[*/0x0161/*::]*/: { n:"BrtBeginExternals", f:parsenoop },
|
/*::[*/0x0161/*::]*/: { n:"BrtBeginExternals", f:parsenoop },
|
||||||
/*::[*/0x0162/*::]*/: { n:"BrtEndExternals", f:parsenoop },
|
/*::[*/0x0162/*::]*/: { n:"BrtEndExternals", f:parsenoop },
|
||||||
/*::[*/0x0163/*::]*/: { n:"BrtSupBookSrc", f:parsenoop },
|
/*::[*/0x0163/*::]*/: { n:"BrtSupBookSrc", f:parse_RelID},
|
||||||
/*::[*/0x0165/*::]*/: { n:"BrtSupSelf", f:parsenoop },
|
/*::[*/0x0165/*::]*/: { n:"BrtSupSelf", f:parsenoop },
|
||||||
/*::[*/0x0166/*::]*/: { n:"BrtSupSame", f:parsenoop },
|
/*::[*/0x0166/*::]*/: { n:"BrtSupSame", f:parsenoop },
|
||||||
/*::[*/0x0167/*::]*/: { n:"BrtSupTabs", f:parsenoop },
|
/*::[*/0x0167/*::]*/: { n:"BrtSupTabs", f:parsenoop },
|
||||||
|
1
demos/angular2/.gitignore
vendored
Normal file
1
demos/angular2/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
dist
|
28
dist/xlsx.core.min.js
vendored
28
dist/xlsx.core.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/xlsx.core.min.map
vendored
2
dist/xlsx.core.min.map
vendored
File diff suppressed because one or more lines are too long
28
dist/xlsx.full.min.js
vendored
28
dist/xlsx.full.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/xlsx.full.min.map
vendored
2
dist/xlsx.full.min.map
vendored
File diff suppressed because one or more lines are too long
83
dist/xlsx.js
vendored
83
dist/xlsx.js
vendored
@ -6,7 +6,7 @@
|
|||||||
/*global global, exports, module, require:false, process:false, Buffer:false */
|
/*global global, exports, module, require:false, process:false, Buffer:false */
|
||||||
var XLSX = {};
|
var XLSX = {};
|
||||||
(function make_xlsx(XLSX){
|
(function make_xlsx(XLSX){
|
||||||
XLSX.version = '0.10.7';
|
XLSX.version = '0.10.8';
|
||||||
var current_codepage = 1200;
|
var current_codepage = 1200;
|
||||||
/*global cptable:true */
|
/*global cptable:true */
|
||||||
if(typeof module !== "undefined" && typeof require !== 'undefined') {
|
if(typeof module !== "undefined" && typeof require !== 'undefined') {
|
||||||
@ -1681,7 +1681,7 @@ var utf8read = function utf8reada(orig) {
|
|||||||
c = orig.charCodeAt(i++);
|
c = orig.charCodeAt(i++);
|
||||||
if (c < 128) { out += String.fromCharCode(c); continue; }
|
if (c < 128) { out += String.fromCharCode(c); continue; }
|
||||||
d = orig.charCodeAt(i++);
|
d = orig.charCodeAt(i++);
|
||||||
if (c>191 && c<224) { out += String.fromCharCode(((c & 31) << 6) | (d & 63)); continue; }
|
if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }
|
||||||
e = orig.charCodeAt(i++);
|
e = orig.charCodeAt(i++);
|
||||||
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
||||||
f = orig.charCodeAt(i++);
|
f = orig.charCodeAt(i++);
|
||||||
@ -3350,6 +3350,7 @@ function parse_ext_props(data, p) {
|
|||||||
case "Worksheets":
|
case "Worksheets":
|
||||||
case "工作表":
|
case "工作表":
|
||||||
case "Листы":
|
case "Листы":
|
||||||
|
case "أوراق العمل":
|
||||||
case "ワークシート":
|
case "ワークシート":
|
||||||
case "גליונות עבודה":
|
case "גליונות עבודה":
|
||||||
case "Arbeitsblätter":
|
case "Arbeitsblätter":
|
||||||
@ -4230,6 +4231,8 @@ function parse_Row(blob, length) {
|
|||||||
blob.l += 4; // reserved(2), unused(2)
|
blob.l += 4; // reserved(2), unused(2)
|
||||||
var flags = blob.read_shift(1); // various flags
|
var flags = blob.read_shift(1); // various flags
|
||||||
blob.l += 3; // reserved(8), ixfe(12), flags(4)
|
blob.l += 3; // reserved(8), ixfe(12), flags(4)
|
||||||
|
if(flags & 0x07) z.level = flags & 0x07;
|
||||||
|
// collapsed: flags & 0x10
|
||||||
if(flags & 0x20) z.hidden = true;
|
if(flags & 0x20) z.hidden = true;
|
||||||
if(flags & 0x40) z.hpt = miyRw / 20;
|
if(flags & 0x40) z.hpt = miyRw / 20;
|
||||||
return z;
|
return z;
|
||||||
@ -5668,7 +5671,8 @@ var PRN = (function() {
|
|||||||
function finish_cell() {
|
function finish_cell() {
|
||||||
var s = str.slice(start, end);
|
var s = str.slice(start, end);
|
||||||
var cell = ({});
|
var cell = ({});
|
||||||
if(s.charCodeAt(0) == 0x3D) { cell.t = 'n'; cell.f = s.substr(1); }
|
if(o.raw) { cell.t = 's'; cell.v = s; }
|
||||||
|
else if(s.charCodeAt(0) == 0x3D) { cell.t = 'n'; cell.f = s.substr(1); }
|
||||||
else if(s == "TRUE") { cell.t = 'b'; cell.v = true; }
|
else if(s == "TRUE") { cell.t = 'b'; cell.v = true; }
|
||||||
else if(s == "FALSE") { cell.t = 'b'; cell.v = false; }
|
else if(s == "FALSE") { cell.t = 'b'; cell.v = false; }
|
||||||
else if(!isNaN(v = +s)) { cell.t = 'n'; cell.w = s; cell.v = v; }
|
else if(!isNaN(v = +s)) { cell.t = 'n'; cell.w = s; cell.v = v; }
|
||||||
@ -5762,7 +5766,6 @@ function read_wb_ID(d, opts) {
|
|||||||
return PRN.to_workbook(d, opts);
|
return PRN.to_workbook(d, opts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var WK_ = (function() {
|
var WK_ = (function() {
|
||||||
function lotushopper(data, cb, opts) {
|
function lotushopper(data, cb, opts) {
|
||||||
if(!data) return;
|
if(!data) return;
|
||||||
@ -7614,7 +7617,7 @@ function parse_clrScheme(t, themes, opts) {
|
|||||||
case '<a:accent6>': case '</a:accent6>':
|
case '<a:accent6>': case '</a:accent6>':
|
||||||
case '<a:hlink>': case '</a:hlink>':
|
case '<a:hlink>': case '</a:hlink>':
|
||||||
case '<a:folHlink>': case '</a:folHlink>':
|
case '<a:folHlink>': case '</a:folHlink>':
|
||||||
if (y[0][1] === '/') {
|
if (y[0].charAt(1) === '/') {
|
||||||
themes.themeElements.clrScheme.push(color);
|
themes.themeElements.clrScheme.push(color);
|
||||||
color = {};
|
color = {};
|
||||||
} else {
|
} else {
|
||||||
@ -10933,6 +10936,7 @@ return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {
|
|||||||
rowobj = {}; rowrite = false;
|
rowobj = {}; rowrite = false;
|
||||||
if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }
|
if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }
|
||||||
if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; }
|
if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; }
|
||||||
|
if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }
|
||||||
if(rowrite) rows[tagr-1] = rowobj;
|
if(rowrite) rows[tagr-1] = rowobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11034,7 +11038,9 @@ return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {
|
|||||||
cf = styles.CellXf[tag.s];
|
cf = styles.CellXf[tag.s];
|
||||||
if(cf != null) {
|
if(cf != null) {
|
||||||
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
||||||
if(opts.cellStyles && cf.fillId != null) fillid = cf.fillId;
|
if(opts.cellStyles) {
|
||||||
|
if(cf.fillId != null) fillid = cf.fillId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
safe_format(p, fmtid, fillid, opts, themes, styles);
|
safe_format(p, fmtid, fillid, opts, themes, styles);
|
||||||
@ -11062,7 +11068,7 @@ function write_ws_xml_data(ws, opts, idx, wb, rels) {
|
|||||||
if(_cell === undefined) continue;
|
if(_cell === undefined) continue;
|
||||||
if((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);
|
if((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);
|
||||||
}
|
}
|
||||||
if(r.length > 0) {
|
if(r.length > 0 || rows && rows[R]) {
|
||||||
var params = ({r:rr});
|
var params = ({r:rr});
|
||||||
if(rows && rows[R]) {
|
if(rows && rows[R]) {
|
||||||
var row = rows[R];
|
var row = rows[R];
|
||||||
@ -11071,10 +11077,24 @@ function write_ws_xml_data(ws, opts, idx, wb, rels) {
|
|||||||
if (row.hpx) height = px2pt(row.hpx);
|
if (row.hpx) height = px2pt(row.hpx);
|
||||||
else if (row.hpt) height = row.hpt;
|
else if (row.hpt) height = row.hpt;
|
||||||
if (height > -1) { params.ht = height; params.customHeight = 1; }
|
if (height > -1) { params.ht = height; params.customHeight = 1; }
|
||||||
|
if (row.level) { params.outlineLevel = row.level; }
|
||||||
}
|
}
|
||||||
o[o.length] = (writextag('row', r.join(""), params));
|
o[o.length] = (writextag('row', r.join(""), params));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(rows) for(; R < rows.length; ++R) {
|
||||||
|
if(rows && rows[R]) {
|
||||||
|
var params = ({r:R+1});
|
||||||
|
var row = rows[R];
|
||||||
|
if(row.hidden) params.hidden = 1;
|
||||||
|
var height = -1;
|
||||||
|
if (row.hpx) height = px2pt(row.hpx);
|
||||||
|
else if (row.hpt) height = row.hpt;
|
||||||
|
if (height > -1) { params.ht = height; params.customHeight = 1; }
|
||||||
|
if (row.level) { params.outlineLevel = row.level; }
|
||||||
|
o[o.length] = (writextag('row', "", params));
|
||||||
|
}
|
||||||
|
}
|
||||||
return o.join("");
|
return o.join("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11100,7 +11120,11 @@ function write_ws_xml(idx, opts, wb, rels) {
|
|||||||
o[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);
|
o[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);
|
||||||
|
|
||||||
/* TODO: store in WB, process styles */
|
/* TODO: store in WB, process styles */
|
||||||
if(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {defaultRowHeight:opts.sheetFormat.defaultRowHeight||'16', baseColWidth:opts.sheetFormat.baseColWidth||'10' }));
|
if(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {
|
||||||
|
defaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',
|
||||||
|
baseColWidth:opts.sheetFormat.baseColWidth||'10',
|
||||||
|
outlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'
|
||||||
|
}));
|
||||||
|
|
||||||
if(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));
|
if(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));
|
||||||
|
|
||||||
@ -11194,6 +11218,7 @@ function parse_BrtRowHdr(data, length) {
|
|||||||
data.l += 1; // TODO: top/bot padding
|
data.l += 1; // TODO: top/bot padding
|
||||||
var flags = data.read_shift(1);
|
var flags = data.read_shift(1);
|
||||||
data.l = tgt;
|
data.l = tgt;
|
||||||
|
if(flags & 0x07) z.level = flags & 0x07;
|
||||||
if(flags & 0x10) z.hidden = true;
|
if(flags & 0x10) z.hidden = true;
|
||||||
if(flags & 0x20) z.hpt = miyRw / 20;
|
if(flags & 0x20) z.hpt = miyRw / 20;
|
||||||
return z;
|
return z;
|
||||||
@ -11213,6 +11238,7 @@ function write_BrtRowHdr(R, range, ws) {
|
|||||||
o.write_shift(1, 0); /* top/bot padding */
|
o.write_shift(1, 0); /* top/bot padding */
|
||||||
|
|
||||||
var flags = 0x0;
|
var flags = 0x0;
|
||||||
|
if(row.level) flags |= row.level;
|
||||||
if(row.hidden) flags |= 0x10;
|
if(row.hidden) flags |= 0x10;
|
||||||
if(row.hpx || row.hpt) flags |= 0x20;
|
if(row.hpx || row.hpt) flags |= 0x20;
|
||||||
o.write_shift(1, flags);
|
o.write_shift(1, flags);
|
||||||
@ -11247,7 +11273,7 @@ function write_BrtRowHdr(R, range, ws) {
|
|||||||
}
|
}
|
||||||
function write_row_header(ba, ws, range, R) {
|
function write_row_header(ba, ws, range, R) {
|
||||||
var o = write_BrtRowHdr(R, range, ws);
|
var o = write_BrtRowHdr(R, range, ws);
|
||||||
if(o.length > 17) write_record(ba, 'BrtRowHdr', o);
|
if(o.length > 17 || (ws['!rows']||[])[R]) write_record(ba, 'BrtRowHdr', o);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [MS-XLSB] 2.4.812 BrtWsDim */
|
/* [MS-XLSB] 2.4.812 BrtWsDim */
|
||||||
@ -11610,7 +11636,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
if(opts.sheetRows && opts.sheetRows <= row.r) end=true;
|
if(opts.sheetRows && opts.sheetRows <= row.r) end=true;
|
||||||
rr = encode_row(R = row.r);
|
rr = encode_row(R = row.r);
|
||||||
opts['!row'] = row.r;
|
opts['!row'] = row.r;
|
||||||
if(val.hidden || val.hpt) {
|
if(val.hidden || val.hpt || val.level != null) {
|
||||||
if(val.hpt) val.hpx = pt2px(val.hpt);
|
if(val.hpt) val.hpx = pt2px(val.hpt);
|
||||||
rowinfo[val.r] = val;
|
rowinfo[val.r] = val;
|
||||||
}
|
}
|
||||||
@ -11659,7 +11685,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0001: /* 'BrtCellBlank' */
|
case 0x0001: /* 'BrtCellBlank' */
|
||||||
if(!opts.sheetStubs) break;
|
if(!opts.sheetStubs || pass) break;
|
||||||
p = ({t:'z',v:undefined});
|
p = ({t:'z',v:undefined});
|
||||||
C = val[0].c;
|
C = val[0].c;
|
||||||
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
||||||
@ -11725,6 +11751,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
s['!margins'] = val;
|
s['!margins'] = val;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x01E5: /* 'BrtWsFmtInfo' */
|
||||||
/* case 'BrtUid' */
|
/* case 'BrtUid' */
|
||||||
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
||||||
case 0x0284: /* 'BrtActiveX' */
|
case 0x0284: /* 'BrtActiveX' */
|
||||||
@ -11777,7 +11804,6 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
case 0x00AA: /* 'BrtTop10Filter' */
|
case 0x00AA: /* 'BrtTop10Filter' */
|
||||||
case 0x0032: /* 'BrtValueMeta' */
|
case 0x0032: /* 'BrtValueMeta' */
|
||||||
case 0x0816: /* 'BrtWebExtension' */
|
case 0x0816: /* 'BrtWebExtension' */
|
||||||
case 0x01E5: /* 'BrtWsFmtInfo' */
|
|
||||||
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
||||||
case 0x0093: /* 'BrtWsProp' */
|
case 0x0093: /* 'BrtWsProp' */
|
||||||
break;
|
break;
|
||||||
@ -11868,12 +11894,14 @@ function write_CELLTABLE(ba, ws, idx, opts, wb) {
|
|||||||
var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = [];
|
var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = [];
|
||||||
write_record(ba, 'BrtBeginSheetData');
|
write_record(ba, 'BrtBeginSheetData');
|
||||||
var dense = Array.isArray(ws);
|
var dense = Array.isArray(ws);
|
||||||
for(var R = range.s.r; R <= range.e.r; ++R) {
|
var cap = range.e.r;
|
||||||
|
if(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);
|
||||||
|
for(var R = range.s.r; R <= cap; ++R) {
|
||||||
rr = encode_row(R);
|
rr = encode_row(R);
|
||||||
/* [ACCELLTABLE] */
|
/* [ACCELLTABLE] */
|
||||||
/* BrtRowHdr */
|
/* BrtRowHdr */
|
||||||
write_row_header(ba, ws, range, R);
|
write_row_header(ba, ws, range, R);
|
||||||
for(var C = range.s.c; C <= range.e.c; ++C) {
|
if(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {
|
||||||
/* *16384CELL */
|
/* *16384CELL */
|
||||||
if(R === range.s.r) cols[C] = encode_col(C);
|
if(R === range.s.r) cols[C] = encode_col(C);
|
||||||
ref = cols[C] + rr;
|
ref = cols[C] + rr;
|
||||||
@ -12412,6 +12440,9 @@ function parse_wb_xml(data, opts) {
|
|||||||
case '<AlternateContent': pass=true; break;
|
case '<AlternateContent': pass=true; break;
|
||||||
case '</AlternateContent>': pass=false; break;
|
case '</AlternateContent>': pass=false; break;
|
||||||
|
|
||||||
|
/* TODO */
|
||||||
|
case '<revisionPtr': break;
|
||||||
|
|
||||||
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
||||||
}
|
}
|
||||||
return x;
|
return x;
|
||||||
@ -12598,6 +12629,9 @@ function parse_wb_bin(data, opts) {
|
|||||||
supbooks.SheetNames.push(val.name);
|
supbooks.SheetNames.push(val.name);
|
||||||
wb.Sheets.push(val); break;
|
wb.Sheets.push(val); break;
|
||||||
|
|
||||||
|
case 0x0099: /* 'BrtWbProp' */
|
||||||
|
wb.WBProps = val; break;
|
||||||
|
|
||||||
case 0x0027: /* 'BrtName' */
|
case 0x0027: /* 'BrtName' */
|
||||||
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
||||||
delete val.Ptg;
|
delete val.Ptg;
|
||||||
@ -12605,8 +12639,13 @@ function parse_wb_bin(data, opts) {
|
|||||||
break;
|
break;
|
||||||
case 0x040C: /* 'BrtNameExt' */ break;
|
case 0x040C: /* 'BrtNameExt' */ break;
|
||||||
|
|
||||||
case 0x0099: /* 'BrtWbProp' */
|
case 0x0165: /* 'BrtSupSelf' */
|
||||||
wb.WBProps = val; break;
|
case 0x0166: /* 'BrtSupSame' */
|
||||||
|
case 0x0163: /* 'BrtSupBookSrc' */
|
||||||
|
case 0x029B: /* 'BrtSupAddin' */
|
||||||
|
case 0x016A: /* 'BrtExternSheet' */
|
||||||
|
case 0x0169: /* 'BrtPlaceholderName' */
|
||||||
|
break;
|
||||||
|
|
||||||
/* case 'BrtModelTimeGroupingCalcCol' */
|
/* case 'BrtModelTimeGroupingCalcCol' */
|
||||||
/* case 'BrtRevisionPtr' */
|
/* case 'BrtRevisionPtr' */
|
||||||
@ -12618,7 +12657,6 @@ function parse_wb_bin(data, opts) {
|
|||||||
case 0x009D: /* 'BrtCalcProp' */
|
case 0x009D: /* 'BrtCalcProp' */
|
||||||
case 0x0262: /* 'BrtCrashRecErr' */
|
case 0x0262: /* 'BrtCrashRecErr' */
|
||||||
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
||||||
case 0x016A: /* 'BrtExternSheet' */
|
|
||||||
case 0x009B: /* 'BrtFileRecover' */
|
case 0x009B: /* 'BrtFileRecover' */
|
||||||
case 0x0224: /* 'BrtFileSharing' */
|
case 0x0224: /* 'BrtFileSharing' */
|
||||||
case 0x02A4: /* 'BrtFileSharingIso' */
|
case 0x02A4: /* 'BrtFileSharingIso' */
|
||||||
@ -12628,12 +12666,7 @@ function parse_wb_bin(data, opts) {
|
|||||||
case 0x084D: /* 'BrtModelTable' */
|
case 0x084D: /* 'BrtModelTable' */
|
||||||
case 0x0225: /* 'BrtOleSize' */
|
case 0x0225: /* 'BrtOleSize' */
|
||||||
case 0x0805: /* 'BrtPivotTableRef' */
|
case 0x0805: /* 'BrtPivotTableRef' */
|
||||||
case 0x0169: /* 'BrtPlaceholderName' */
|
|
||||||
case 0x0254: /* 'BrtSmartTagType' */
|
case 0x0254: /* 'BrtSmartTagType' */
|
||||||
case 0x029B: /* 'BrtSupAddin' */
|
|
||||||
case 0x0163: /* 'BrtSupBookSrc' */
|
|
||||||
case 0x0166: /* 'BrtSupSame' */
|
|
||||||
case 0x0165: /* 'BrtSupSelf' */
|
|
||||||
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
||||||
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
||||||
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
||||||
@ -14450,6 +14483,7 @@ wb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;
|
|||||||
} break;
|
} break;
|
||||||
case 'Row': {
|
case 'Row': {
|
||||||
var rowobj = {};
|
var rowobj = {};
|
||||||
|
if(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }
|
||||||
if(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }
|
if(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }
|
||||||
if(val.hpt) {
|
if(val.hpt) {
|
||||||
rowinfo[val.r] = rowobj;
|
rowinfo[val.r] = rowobj;
|
||||||
@ -15055,7 +15089,7 @@ var XLSBRecordEnum = {
|
|||||||
0x0160: { n:"BrtListTrFmla", f:parsenoop },
|
0x0160: { n:"BrtListTrFmla", f:parsenoop },
|
||||||
0x0161: { n:"BrtBeginExternals", f:parsenoop },
|
0x0161: { n:"BrtBeginExternals", f:parsenoop },
|
||||||
0x0162: { n:"BrtEndExternals", f:parsenoop },
|
0x0162: { n:"BrtEndExternals", f:parsenoop },
|
||||||
0x0163: { n:"BrtSupBookSrc", f:parsenoop },
|
0x0163: { n:"BrtSupBookSrc", f:parse_RelID},
|
||||||
0x0165: { n:"BrtSupSelf", f:parsenoop },
|
0x0165: { n:"BrtSupSelf", f:parsenoop },
|
||||||
0x0166: { n:"BrtSupSame", f:parsenoop },
|
0x0166: { n:"BrtSupSame", f:parsenoop },
|
||||||
0x0167: { n:"BrtSupTabs", f:parsenoop },
|
0x0167: { n:"BrtSupTabs", f:parsenoop },
|
||||||
@ -16570,6 +16604,9 @@ var parse_content_xml = (function() {
|
|||||||
|
|
||||||
case 'forms': break; // 12.25.2 13.2
|
case 'forms': break; // 12.25.2 13.2
|
||||||
case 'table-column': break; // 9.1.6 <table:table-column>
|
case 'table-column': break; // 9.1.6 <table:table-column>
|
||||||
|
/* TODO: outline levels */
|
||||||
|
case 'table-row-group': break; // 9.1.9 <table:table-row-group>
|
||||||
|
case 'table-column-group': break; // 9.1.10 <table:table-column-group>
|
||||||
|
|
||||||
case 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904
|
case 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904
|
||||||
|
|
||||||
|
28
dist/xlsx.min.js
vendored
28
dist/xlsx.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/xlsx.min.map
vendored
2
dist/xlsx.min.map
vendored
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "xlsx",
|
"name": "xlsx",
|
||||||
"version": "0.10.7",
|
"version": "0.10.8",
|
||||||
"author": "sheetjs",
|
"author": "sheetjs",
|
||||||
"description": "Excel (XLSB/XLSX/XLS/XML) ODS and other spreadsheet format (CSV/DIF/DBF/SYLK) parser and writer",
|
"description": "Excel (XLSB/XLSX/XLS/XML) ODS and other spreadsheet format (CSV/DIF/DBF/SYLK) parser and writer",
|
||||||
"keywords": [ "excel", "xls", "xlsx", "xlsb", "xlsm", "ods", "csv", "dbf", "dif", "sylk", "office", "spreadsheet" ],
|
"keywords": [ "excel", "xls", "xlsx", "xlsb", "xlsm", "ods", "csv", "dbf", "dif", "sylk", "office", "spreadsheet" ],
|
||||||
|
@ -29,6 +29,7 @@ number_format.xlsb
|
|||||||
number_format_entities.xlsb
|
number_format_entities.xlsb
|
||||||
number_format_russian.xlsb
|
number_format_russian.xlsb
|
||||||
numfmt_1_russian.xlsb
|
numfmt_1_russian.xlsb
|
||||||
|
outline.xlsb
|
||||||
phonetic_text.xlsb
|
phonetic_text.xlsb
|
||||||
pivot_table_named_range.xlsb
|
pivot_table_named_range.xlsb
|
||||||
pivot_table_test.xlsb
|
pivot_table_test.xlsb
|
||||||
@ -362,6 +363,7 @@ openpyxl_r_formulae.xlsx
|
|||||||
openpyxl_r_nonstandard_workbook_name.xlsx
|
openpyxl_r_nonstandard_workbook_name.xlsx
|
||||||
openpyxl_r_null_archive.xlsx.pending
|
openpyxl_r_null_archive.xlsx.pending
|
||||||
openpyxl_r_null_file.xlsx.pending
|
openpyxl_r_null_file.xlsx.pending
|
||||||
|
outline.xlsx
|
||||||
phonetic_text.xlsx
|
phonetic_text.xlsx
|
||||||
pivot_table_named_range.xlsx
|
pivot_table_named_range.xlsx
|
||||||
rich_text_stress.xlsx
|
rich_text_stress.xlsx
|
||||||
@ -553,6 +555,7 @@ cell_style_simple.ods
|
|||||||
formula_stress_test.ods
|
formula_stress_test.ods
|
||||||
merge_cells.ods
|
merge_cells.ods
|
||||||
number_format.ods
|
number_format.ods
|
||||||
|
outline.ods
|
||||||
rich_text_stress.ods
|
rich_text_stress.ods
|
||||||
roo_numbers1.ods
|
roo_numbers1.ods
|
||||||
roo_type_excel.ods
|
roo_type_excel.ods
|
||||||
@ -1198,6 +1201,7 @@ number_format.xls
|
|||||||
number_format_entities.xls
|
number_format_entities.xls
|
||||||
number_format_russian.xls
|
number_format_russian.xls
|
||||||
numfmt_1_russian.xls
|
numfmt_1_russian.xls
|
||||||
|
outline.xls
|
||||||
phonetic_text.xls
|
phonetic_text.xls
|
||||||
phpexcel_bad_cfb_dir.xls
|
phpexcel_bad_cfb_dir.xls
|
||||||
pivot_table_named_range.xls
|
pivot_table_named_range.xls
|
||||||
@ -1371,6 +1375,10 @@ xlsx-stream-d-date-cell.xlsx.xml
|
|||||||
2013/apachepoi_54016.xls.xlsb
|
2013/apachepoi_54016.xls.xlsb
|
||||||
2013/apachepoi_ReadOnlyRecommended.xls.xlsb
|
2013/apachepoi_ReadOnlyRecommended.xls.xlsb
|
||||||
2013/apachepoi_testArraysAndTables.xls.xlsb
|
2013/apachepoi_testArraysAndTables.xls.xlsb
|
||||||
|
column_width.biff5
|
||||||
|
outline.biff5
|
||||||
|
row_height.biff5
|
||||||
|
sized_boxen.biff5
|
||||||
artifacts/quattro/write_.csv
|
artifacts/quattro/write_.csv
|
||||||
artifacts/quattro/write_.dif
|
artifacts/quattro/write_.dif
|
||||||
artifacts/quattro/write_.slk
|
artifacts/quattro/write_.slk
|
||||||
|
@ -92,6 +92,12 @@ var paths = {
|
|||||||
nfxlsx: dir + 'number_format.xlsm',
|
nfxlsx: dir + 'number_format.xlsm',
|
||||||
nfxlsb: dir + 'number_format.xlsb',
|
nfxlsb: dir + 'number_format.xlsb',
|
||||||
|
|
||||||
|
olxls: dir + 'outline.xls',
|
||||||
|
olxls5: dir + 'outline.biff5',
|
||||||
|
olxlsx: dir + 'outline.xlsx',
|
||||||
|
olxlsb: dir + 'outline.xlsb',
|
||||||
|
olods: dir + 'outline.ods',
|
||||||
|
|
||||||
pmxls: dir + 'page_margins_2016.xls',
|
pmxls: dir + 'page_margins_2016.xls',
|
||||||
pmxls5: dir + 'page_margins_2016_5.xls',
|
pmxls5: dir + 'page_margins_2016_5.xls',
|
||||||
pmxml: dir + 'page_margins_2016.xml',
|
pmxml: dir + 'page_margins_2016.xml',
|
||||||
@ -896,6 +902,7 @@ describe('parse features', function() {
|
|||||||
|
|
||||||
describe('row properties', function() {
|
describe('row properties', function() {
|
||||||
var wb1, wb2, wb3, wb4, wb5, wb6;
|
var wb1, wb2, wb3, wb4, wb5, wb6;
|
||||||
|
var ol1, ol2, ol3, ol4, ol5;
|
||||||
var bef = (function() {
|
var bef = (function() {
|
||||||
X = require(modp);
|
X = require(modp);
|
||||||
wb1 = X.read(fs.readFileSync(paths.rhxlsx), {type:"binary", cellStyles:true});
|
wb1 = X.read(fs.readFileSync(paths.rhxlsx), {type:"binary", cellStyles:true});
|
||||||
@ -904,6 +911,11 @@ describe('parse features', function() {
|
|||||||
wb4 = X.read(fs.readFileSync(paths.rhxls5), {type:"binary", cellStyles:true});
|
wb4 = X.read(fs.readFileSync(paths.rhxls5), {type:"binary", cellStyles:true});
|
||||||
wb5 = X.read(fs.readFileSync(paths.rhxml), {type:"binary", cellStyles:true});
|
wb5 = X.read(fs.readFileSync(paths.rhxml), {type:"binary", cellStyles:true});
|
||||||
wb6 = X.read(fs.readFileSync(paths.rhslk), {type:"binary", cellStyles:true});
|
wb6 = X.read(fs.readFileSync(paths.rhslk), {type:"binary", cellStyles:true});
|
||||||
|
ol1 = X.read(fs.readFileSync(paths.olxlsx), {type:"binary", cellStyles:true});
|
||||||
|
ol2 = X.read(fs.readFileSync(paths.olxlsb), {type:"binary", cellStyles:true});
|
||||||
|
ol3 = X.read(fs.readFileSync(paths.olxls), {type:"binary", cellStyles:true});
|
||||||
|
ol4 = X.read(fs.readFileSync(paths.olxls5), {type:"binary", cellStyles:true});
|
||||||
|
ol5 = X.read(fs.readFileSync(paths.olods), {type:"binary", cellStyles:true});
|
||||||
});
|
});
|
||||||
if(typeof before != 'undefined') before(bef);
|
if(typeof before != 'undefined') before(bef);
|
||||||
else it('before', bef);
|
else it('before', bef);
|
||||||
@ -925,6 +937,22 @@ describe('parse features', function() {
|
|||||||
assert.equal(x[3].hpx, 100);
|
assert.equal(x[3].hpx, 100);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
it('should have correct outline levels', function() {
|
||||||
|
/* TODO: ODS */
|
||||||
|
[ol1, ol2, ol3, ol4/*, ol5*/].map(function(x) { return x.Sheets.Sheet1; }).forEach(function(ws) {
|
||||||
|
var rows = ws['!rows'];
|
||||||
|
for(var i = 0; i < 29; ++i) {
|
||||||
|
var cell = get_cell(ws, "A" + X.utils.encode_row(i));
|
||||||
|
var lvl = (rows[i]||{}).level||0;
|
||||||
|
if(!cell || cell.t == 's') assert.equal(lvl, 0);
|
||||||
|
else if(cell.t == 'n') {
|
||||||
|
if(cell.v == 0) assert.equal(lvl, 0);
|
||||||
|
else assert.equal(lvl, cell.v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert.equal(rows[29].level, 7);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('merge cells',function() {
|
describe('merge cells',function() {
|
||||||
@ -1395,18 +1423,21 @@ describe('roundtrip features', function() {
|
|||||||
}); });
|
}); });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* TODO: ODS and BIFF5/8 */
|
||||||
describe('should preserve row properties', function() { [
|
describe('should preserve row properties', function() { [
|
||||||
'xlml', /*'biff2', */ 'xlsx', 'xlsb', 'slk'
|
'xlml', /*'biff2', */ 'xlsx', 'xlsb', 'slk'
|
||||||
].forEach(function(w) { it(w, function() {
|
].forEach(function(w) { it(w, function() {
|
||||||
var ws1 = X.utils.aoa_to_sheet([["hpx12"],["hpt24"],["hpx48"],["hidden"]]);
|
var ws1 = X.utils.aoa_to_sheet([["hpx12"],["hpt24"],["hpx48"],["hidden"]]);
|
||||||
ws1['!rows'] = [{hpx:12},{hpt:24},{hpx:48},{hidden:true}];
|
ws1['!rows'] = [{hpx:12},{hpt:24},{hpx:48},{hidden:true}];
|
||||||
|
for(var i = 0; i <= 7; ++i) ws1['!rows'].push({level:i});
|
||||||
var wb1 = {SheetNames:["Sheet1"], Sheets:{Sheet1:ws1}};
|
var wb1 = {SheetNames:["Sheet1"], Sheets:{Sheet1:ws1}};
|
||||||
var wb2 = X.read(X.write(wb1, {bookType:w, type:"binary"}), {type:"binary", cellStyles:true});
|
var wb2 = X.read(X.write(wb1, {bookType:w, type:"binary", cellStyles:true}), {type:"binary", cellStyles:true});
|
||||||
var ws2 = wb2.Sheets.Sheet1;
|
var ws2 = wb2.Sheets.Sheet1;
|
||||||
assert.equal(ws2['!rows'][0].hpx, 12);
|
assert.equal(ws2['!rows'][0].hpx, 12);
|
||||||
assert.equal(ws2['!rows'][1].hpt, 24);
|
assert.equal(ws2['!rows'][1].hpt, 24);
|
||||||
assert.equal(ws2['!rows'][2].hpx, 48);
|
assert.equal(ws2['!rows'][2].hpx, 48);
|
||||||
assert.equal(ws2['!rows'][3].hidden, true);
|
assert.equal(ws2['!rows'][3].hidden, true);
|
||||||
|
if(w == 'xlsb' || w == 'xlsx') for(i = 0; i <= 7; ++i) assert.equal((ws2['!rows'][4+i]||{}).level||0, i);
|
||||||
}); });
|
}); });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -50,6 +50,11 @@
|
|||||||
./test_files/number_format.xls.xml
|
./test_files/number_format.xls.xml
|
||||||
./test_files/number_format.xlsm
|
./test_files/number_format.xlsm
|
||||||
./test_files/number_format.xlsb
|
./test_files/number_format.xlsb
|
||||||
|
./test_files/outline.xls
|
||||||
|
./test_files/outline.biff5
|
||||||
|
./test_files/outline.xlsx
|
||||||
|
./test_files/outline.xlsb
|
||||||
|
./test_files/outline.ods
|
||||||
./test_files/page_margins_2016.xls
|
./test_files/page_margins_2016.xls
|
||||||
./test_files/page_margins_2016_5.xls
|
./test_files/page_margins_2016_5.xls
|
||||||
./test_files/page_margins_2016.xml
|
./test_files/page_margins_2016.xml
|
||||||
|
@ -30,7 +30,7 @@ fs.readdirSync = function(p) { return Object.keys(fs).filter(function(n) {
|
|||||||
return fs.hasOwnProperty(n) && n.slice(-4) != "Sync"; });
|
return fs.hasOwnProperty(n) && n.slice(-4) != "Sync"; });
|
||||||
};
|
};
|
||||||
fs.readFileSync = function(f, enc) {
|
fs.readFileSync = function(f, enc) {
|
||||||
if(!fs[f]) throw "File not found: " + f;
|
if(!fs[f]) throw new Error("File not found: " + f);
|
||||||
fs[f].length;
|
fs[f].length;
|
||||||
switch(enc) {
|
switch(enc) {
|
||||||
case 'base64': return fs[f];
|
case 'base64': return fs[f];
|
||||||
|
6
types/index.d.ts
vendored
6
types/index.d.ts
vendored
@ -620,9 +620,9 @@ export interface XLSX$Utils {
|
|||||||
json_to_sheet<T>(data: T[], opts?: JSON2SheetOpts): WorkSheet;
|
json_to_sheet<T>(data: T[], opts?: JSON2SheetOpts): WorkSheet;
|
||||||
json_to_sheet(data: any[], opts?: JSON2SheetOpts): WorkSheet;
|
json_to_sheet(data: any[], opts?: JSON2SheetOpts): WorkSheet;
|
||||||
|
|
||||||
/** Converts a TABLE DOM element to a worksheet. */
|
/** BROWSER ONLY! Converts a TABLE DOM element to a worksheet. */
|
||||||
table_to_sheet(data: HTMLTableElement, opts?: Table2SheetOpts): WorkSheet;
|
table_to_sheet(data: any, opts?: Table2SheetOpts): WorkSheet;
|
||||||
table_to_book(data: HTMLTableElement, opts?: Table2SheetOpts): WorkBook;
|
table_to_book(data: any, opts?: Table2SheetOpts): WorkBook;
|
||||||
|
|
||||||
/* --- Export Functions --- */
|
/* --- Export Functions --- */
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"lib": [ "es5", "dom" ],
|
"lib": [ "es5" ],
|
||||||
"noImplicitAny": true,
|
"noImplicitAny": true,
|
||||||
"noImplicitThis": true,
|
"noImplicitThis": true,
|
||||||
"strictNullChecks": false,
|
"strictNullChecks": false,
|
||||||
|
38
xlsx.flow.js
38
xlsx.flow.js
@ -6,7 +6,7 @@
|
|||||||
/*global global, exports, module, require:false, process:false, Buffer:false */
|
/*global global, exports, module, require:false, process:false, Buffer:false */
|
||||||
var XLSX = {};
|
var XLSX = {};
|
||||||
(function make_xlsx(XLSX){
|
(function make_xlsx(XLSX){
|
||||||
XLSX.version = '0.10.7';
|
XLSX.version = '0.10.8';
|
||||||
var current_codepage = 1200;
|
var current_codepage = 1200;
|
||||||
/*:: declare var cptable:any; */
|
/*:: declare var cptable:any; */
|
||||||
/*global cptable:true */
|
/*global cptable:true */
|
||||||
@ -1733,7 +1733,7 @@ var utf8read/*:StringConv*/ = function utf8reada(orig) {
|
|||||||
c = orig.charCodeAt(i++);
|
c = orig.charCodeAt(i++);
|
||||||
if (c < 128) { out += String.fromCharCode(c); continue; }
|
if (c < 128) { out += String.fromCharCode(c); continue; }
|
||||||
d = orig.charCodeAt(i++);
|
d = orig.charCodeAt(i++);
|
||||||
if (c>191 && c<224) { out += String.fromCharCode(((c & 31) << 6) | (d & 63)); continue; }
|
if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }
|
||||||
e = orig.charCodeAt(i++);
|
e = orig.charCodeAt(i++);
|
||||||
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
||||||
f = orig.charCodeAt(i++);
|
f = orig.charCodeAt(i++);
|
||||||
@ -3410,6 +3410,7 @@ function parse_ext_props(data, p) {
|
|||||||
case "Worksheets":
|
case "Worksheets":
|
||||||
case "工作表":
|
case "工作表":
|
||||||
case "Листы":
|
case "Листы":
|
||||||
|
case "أوراق العمل":
|
||||||
case "ワークシート":
|
case "ワークシート":
|
||||||
case "גליונות עבודה":
|
case "גליונות עבודה":
|
||||||
case "Arbeitsblätter":
|
case "Arbeitsblätter":
|
||||||
@ -7681,7 +7682,7 @@ function parse_clrScheme(t, themes, opts) {
|
|||||||
case '<a:accent6>': case '</a:accent6>':
|
case '<a:accent6>': case '</a:accent6>':
|
||||||
case '<a:hlink>': case '</a:hlink>':
|
case '<a:hlink>': case '</a:hlink>':
|
||||||
case '<a:folHlink>': case '</a:folHlink>':
|
case '<a:folHlink>': case '</a:folHlink>':
|
||||||
if (y[0][1] === '/') {
|
if (y[0].charAt(1) === '/') {
|
||||||
themes.themeElements.clrScheme.push(color);
|
themes.themeElements.clrScheme.push(color);
|
||||||
color = {};
|
color = {};
|
||||||
} else {
|
} else {
|
||||||
@ -11103,7 +11104,9 @@ return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {
|
|||||||
cf = styles.CellXf[tag.s];
|
cf = styles.CellXf[tag.s];
|
||||||
if(cf != null) {
|
if(cf != null) {
|
||||||
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
||||||
if(opts.cellStyles && cf.fillId != null) fillid = cf.fillId;
|
if(opts.cellStyles) {
|
||||||
|
if(cf.fillId != null) fillid = cf.fillId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
safe_format(p, fmtid, fillid, opts, themes, styles);
|
safe_format(p, fmtid, fillid, opts, themes, styles);
|
||||||
@ -11749,7 +11752,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles)/*:Worksheet*/ {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0001: /* 'BrtCellBlank' */
|
case 0x0001: /* 'BrtCellBlank' */
|
||||||
if(!opts.sheetStubs) break;
|
if(!opts.sheetStubs || pass) break;
|
||||||
p = ({t:'z',v:undefined}/*:any*/);
|
p = ({t:'z',v:undefined}/*:any*/);
|
||||||
C = val[0].c;
|
C = val[0].c;
|
||||||
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
||||||
@ -11815,6 +11818,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles)/*:Worksheet*/ {
|
|||||||
s['!margins'] = val;
|
s['!margins'] = val;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x01E5: /* 'BrtWsFmtInfo' */
|
||||||
/* case 'BrtUid' */
|
/* case 'BrtUid' */
|
||||||
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
||||||
case 0x0284: /* 'BrtActiveX' */
|
case 0x0284: /* 'BrtActiveX' */
|
||||||
@ -11867,7 +11871,6 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles)/*:Worksheet*/ {
|
|||||||
case 0x00AA: /* 'BrtTop10Filter' */
|
case 0x00AA: /* 'BrtTop10Filter' */
|
||||||
case 0x0032: /* 'BrtValueMeta' */
|
case 0x0032: /* 'BrtValueMeta' */
|
||||||
case 0x0816: /* 'BrtWebExtension' */
|
case 0x0816: /* 'BrtWebExtension' */
|
||||||
case 0x01E5: /* 'BrtWsFmtInfo' */
|
|
||||||
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
||||||
case 0x0093: /* 'BrtWsProp' */
|
case 0x0093: /* 'BrtWsProp' */
|
||||||
break;
|
break;
|
||||||
@ -12504,6 +12507,9 @@ function parse_wb_xml(data, opts)/*:WorkbookFile*/ {
|
|||||||
case '<AlternateContent': pass=true; break;
|
case '<AlternateContent': pass=true; break;
|
||||||
case '</AlternateContent>': pass=false; break;
|
case '</AlternateContent>': pass=false; break;
|
||||||
|
|
||||||
|
/* TODO */
|
||||||
|
case '<revisionPtr': break;
|
||||||
|
|
||||||
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
||||||
}
|
}
|
||||||
return x;
|
return x;
|
||||||
@ -12691,6 +12697,9 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
supbooks.SheetNames.push(val.name);
|
supbooks.SheetNames.push(val.name);
|
||||||
wb.Sheets.push(val); break;
|
wb.Sheets.push(val); break;
|
||||||
|
|
||||||
|
case 0x0099: /* 'BrtWbProp' */
|
||||||
|
wb.WBProps = val; break;
|
||||||
|
|
||||||
case 0x0027: /* 'BrtName' */
|
case 0x0027: /* 'BrtName' */
|
||||||
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
||||||
delete val.Ptg;
|
delete val.Ptg;
|
||||||
@ -12698,8 +12707,13 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
break;
|
break;
|
||||||
case 0x040C: /* 'BrtNameExt' */ break;
|
case 0x040C: /* 'BrtNameExt' */ break;
|
||||||
|
|
||||||
case 0x0099: /* 'BrtWbProp' */
|
case 0x0165: /* 'BrtSupSelf' */
|
||||||
wb.WBProps = val; break;
|
case 0x0166: /* 'BrtSupSame' */
|
||||||
|
case 0x0163: /* 'BrtSupBookSrc' */
|
||||||
|
case 0x029B: /* 'BrtSupAddin' */
|
||||||
|
case 0x016A: /* 'BrtExternSheet' */
|
||||||
|
case 0x0169: /* 'BrtPlaceholderName' */
|
||||||
|
break;
|
||||||
|
|
||||||
/* case 'BrtModelTimeGroupingCalcCol' */
|
/* case 'BrtModelTimeGroupingCalcCol' */
|
||||||
/* case 'BrtRevisionPtr' */
|
/* case 'BrtRevisionPtr' */
|
||||||
@ -12711,7 +12725,6 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
case 0x009D: /* 'BrtCalcProp' */
|
case 0x009D: /* 'BrtCalcProp' */
|
||||||
case 0x0262: /* 'BrtCrashRecErr' */
|
case 0x0262: /* 'BrtCrashRecErr' */
|
||||||
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
||||||
case 0x016A: /* 'BrtExternSheet' */
|
|
||||||
case 0x009B: /* 'BrtFileRecover' */
|
case 0x009B: /* 'BrtFileRecover' */
|
||||||
case 0x0224: /* 'BrtFileSharing' */
|
case 0x0224: /* 'BrtFileSharing' */
|
||||||
case 0x02A4: /* 'BrtFileSharingIso' */
|
case 0x02A4: /* 'BrtFileSharingIso' */
|
||||||
@ -12721,12 +12734,7 @@ function parse_wb_bin(data, opts)/*:WorkbookFile*/ {
|
|||||||
case 0x084D: /* 'BrtModelTable' */
|
case 0x084D: /* 'BrtModelTable' */
|
||||||
case 0x0225: /* 'BrtOleSize' */
|
case 0x0225: /* 'BrtOleSize' */
|
||||||
case 0x0805: /* 'BrtPivotTableRef' */
|
case 0x0805: /* 'BrtPivotTableRef' */
|
||||||
case 0x0169: /* 'BrtPlaceholderName' */
|
|
||||||
case 0x0254: /* 'BrtSmartTagType' */
|
case 0x0254: /* 'BrtSmartTagType' */
|
||||||
case 0x029B: /* 'BrtSupAddin' */
|
|
||||||
case 0x0163: /* 'BrtSupBookSrc' */
|
|
||||||
case 0x0166: /* 'BrtSupSame' */
|
|
||||||
case 0x0165: /* 'BrtSupSelf' */
|
|
||||||
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
||||||
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
||||||
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
||||||
@ -15155,7 +15163,7 @@ var XLSBRecordEnum = {
|
|||||||
/*::[*/0x0160/*::]*/: { n:"BrtListTrFmla", f:parsenoop },
|
/*::[*/0x0160/*::]*/: { n:"BrtListTrFmla", f:parsenoop },
|
||||||
/*::[*/0x0161/*::]*/: { n:"BrtBeginExternals", f:parsenoop },
|
/*::[*/0x0161/*::]*/: { n:"BrtBeginExternals", f:parsenoop },
|
||||||
/*::[*/0x0162/*::]*/: { n:"BrtEndExternals", f:parsenoop },
|
/*::[*/0x0162/*::]*/: { n:"BrtEndExternals", f:parsenoop },
|
||||||
/*::[*/0x0163/*::]*/: { n:"BrtSupBookSrc", f:parsenoop },
|
/*::[*/0x0163/*::]*/: { n:"BrtSupBookSrc", f:parse_RelID},
|
||||||
/*::[*/0x0165/*::]*/: { n:"BrtSupSelf", f:parsenoop },
|
/*::[*/0x0165/*::]*/: { n:"BrtSupSelf", f:parsenoop },
|
||||||
/*::[*/0x0166/*::]*/: { n:"BrtSupSame", f:parsenoop },
|
/*::[*/0x0166/*::]*/: { n:"BrtSupSame", f:parsenoop },
|
||||||
/*::[*/0x0167/*::]*/: { n:"BrtSupTabs", f:parsenoop },
|
/*::[*/0x0167/*::]*/: { n:"BrtSupTabs", f:parsenoop },
|
||||||
|
38
xlsx.js
38
xlsx.js
@ -6,7 +6,7 @@
|
|||||||
/*global global, exports, module, require:false, process:false, Buffer:false */
|
/*global global, exports, module, require:false, process:false, Buffer:false */
|
||||||
var XLSX = {};
|
var XLSX = {};
|
||||||
(function make_xlsx(XLSX){
|
(function make_xlsx(XLSX){
|
||||||
XLSX.version = '0.10.7';
|
XLSX.version = '0.10.8';
|
||||||
var current_codepage = 1200;
|
var current_codepage = 1200;
|
||||||
/*global cptable:true */
|
/*global cptable:true */
|
||||||
if(typeof module !== "undefined" && typeof require !== 'undefined') {
|
if(typeof module !== "undefined" && typeof require !== 'undefined') {
|
||||||
@ -1681,7 +1681,7 @@ var utf8read = function utf8reada(orig) {
|
|||||||
c = orig.charCodeAt(i++);
|
c = orig.charCodeAt(i++);
|
||||||
if (c < 128) { out += String.fromCharCode(c); continue; }
|
if (c < 128) { out += String.fromCharCode(c); continue; }
|
||||||
d = orig.charCodeAt(i++);
|
d = orig.charCodeAt(i++);
|
||||||
if (c>191 && c<224) { out += String.fromCharCode(((c & 31) << 6) | (d & 63)); continue; }
|
if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }
|
||||||
e = orig.charCodeAt(i++);
|
e = orig.charCodeAt(i++);
|
||||||
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }
|
||||||
f = orig.charCodeAt(i++);
|
f = orig.charCodeAt(i++);
|
||||||
@ -3350,6 +3350,7 @@ function parse_ext_props(data, p) {
|
|||||||
case "Worksheets":
|
case "Worksheets":
|
||||||
case "工作表":
|
case "工作表":
|
||||||
case "Листы":
|
case "Листы":
|
||||||
|
case "أوراق العمل":
|
||||||
case "ワークシート":
|
case "ワークシート":
|
||||||
case "גליונות עבודה":
|
case "גליונות עבודה":
|
||||||
case "Arbeitsblätter":
|
case "Arbeitsblätter":
|
||||||
@ -7616,7 +7617,7 @@ function parse_clrScheme(t, themes, opts) {
|
|||||||
case '<a:accent6>': case '</a:accent6>':
|
case '<a:accent6>': case '</a:accent6>':
|
||||||
case '<a:hlink>': case '</a:hlink>':
|
case '<a:hlink>': case '</a:hlink>':
|
||||||
case '<a:folHlink>': case '</a:folHlink>':
|
case '<a:folHlink>': case '</a:folHlink>':
|
||||||
if (y[0][1] === '/') {
|
if (y[0].charAt(1) === '/') {
|
||||||
themes.themeElements.clrScheme.push(color);
|
themes.themeElements.clrScheme.push(color);
|
||||||
color = {};
|
color = {};
|
||||||
} else {
|
} else {
|
||||||
@ -11037,7 +11038,9 @@ return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {
|
|||||||
cf = styles.CellXf[tag.s];
|
cf = styles.CellXf[tag.s];
|
||||||
if(cf != null) {
|
if(cf != null) {
|
||||||
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
if(cf.numFmtId != null) fmtid = cf.numFmtId;
|
||||||
if(opts.cellStyles && cf.fillId != null) fillid = cf.fillId;
|
if(opts.cellStyles) {
|
||||||
|
if(cf.fillId != null) fillid = cf.fillId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
safe_format(p, fmtid, fillid, opts, themes, styles);
|
safe_format(p, fmtid, fillid, opts, themes, styles);
|
||||||
@ -11682,7 +11685,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0001: /* 'BrtCellBlank' */
|
case 0x0001: /* 'BrtCellBlank' */
|
||||||
if(!opts.sheetStubs) break;
|
if(!opts.sheetStubs || pass) break;
|
||||||
p = ({t:'z',v:undefined});
|
p = ({t:'z',v:undefined});
|
||||||
C = val[0].c;
|
C = val[0].c;
|
||||||
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }
|
||||||
@ -11748,6 +11751,7 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
s['!margins'] = val;
|
s['!margins'] = val;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x01E5: /* 'BrtWsFmtInfo' */
|
||||||
/* case 'BrtUid' */
|
/* case 'BrtUid' */
|
||||||
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
case 0x00AF: /* 'BrtAFilterDateGroupItem' */
|
||||||
case 0x0284: /* 'BrtActiveX' */
|
case 0x0284: /* 'BrtActiveX' */
|
||||||
@ -11800,7 +11804,6 @@ function parse_ws_bin(data, _opts, rels, wb, themes, styles) {
|
|||||||
case 0x00AA: /* 'BrtTop10Filter' */
|
case 0x00AA: /* 'BrtTop10Filter' */
|
||||||
case 0x0032: /* 'BrtValueMeta' */
|
case 0x0032: /* 'BrtValueMeta' */
|
||||||
case 0x0816: /* 'BrtWebExtension' */
|
case 0x0816: /* 'BrtWebExtension' */
|
||||||
case 0x01E5: /* 'BrtWsFmtInfo' */
|
|
||||||
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
case 0x0415: /* 'BrtWsFmtInfoEx14' */
|
||||||
case 0x0093: /* 'BrtWsProp' */
|
case 0x0093: /* 'BrtWsProp' */
|
||||||
break;
|
break;
|
||||||
@ -12437,6 +12440,9 @@ function parse_wb_xml(data, opts) {
|
|||||||
case '<AlternateContent': pass=true; break;
|
case '<AlternateContent': pass=true; break;
|
||||||
case '</AlternateContent>': pass=false; break;
|
case '</AlternateContent>': pass=false; break;
|
||||||
|
|
||||||
|
/* TODO */
|
||||||
|
case '<revisionPtr': break;
|
||||||
|
|
||||||
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');
|
||||||
}
|
}
|
||||||
return x;
|
return x;
|
||||||
@ -12623,6 +12629,9 @@ function parse_wb_bin(data, opts) {
|
|||||||
supbooks.SheetNames.push(val.name);
|
supbooks.SheetNames.push(val.name);
|
||||||
wb.Sheets.push(val); break;
|
wb.Sheets.push(val); break;
|
||||||
|
|
||||||
|
case 0x0099: /* 'BrtWbProp' */
|
||||||
|
wb.WBProps = val; break;
|
||||||
|
|
||||||
case 0x0027: /* 'BrtName' */
|
case 0x0027: /* 'BrtName' */
|
||||||
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);
|
||||||
delete val.Ptg;
|
delete val.Ptg;
|
||||||
@ -12630,8 +12639,13 @@ function parse_wb_bin(data, opts) {
|
|||||||
break;
|
break;
|
||||||
case 0x040C: /* 'BrtNameExt' */ break;
|
case 0x040C: /* 'BrtNameExt' */ break;
|
||||||
|
|
||||||
case 0x0099: /* 'BrtWbProp' */
|
case 0x0165: /* 'BrtSupSelf' */
|
||||||
wb.WBProps = val; break;
|
case 0x0166: /* 'BrtSupSame' */
|
||||||
|
case 0x0163: /* 'BrtSupBookSrc' */
|
||||||
|
case 0x029B: /* 'BrtSupAddin' */
|
||||||
|
case 0x016A: /* 'BrtExternSheet' */
|
||||||
|
case 0x0169: /* 'BrtPlaceholderName' */
|
||||||
|
break;
|
||||||
|
|
||||||
/* case 'BrtModelTimeGroupingCalcCol' */
|
/* case 'BrtModelTimeGroupingCalcCol' */
|
||||||
/* case 'BrtRevisionPtr' */
|
/* case 'BrtRevisionPtr' */
|
||||||
@ -12643,7 +12657,6 @@ function parse_wb_bin(data, opts) {
|
|||||||
case 0x009D: /* 'BrtCalcProp' */
|
case 0x009D: /* 'BrtCalcProp' */
|
||||||
case 0x0262: /* 'BrtCrashRecErr' */
|
case 0x0262: /* 'BrtCrashRecErr' */
|
||||||
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
case 0x0802: /* 'BrtDecoupledPivotCacheID' */
|
||||||
case 0x016A: /* 'BrtExternSheet' */
|
|
||||||
case 0x009B: /* 'BrtFileRecover' */
|
case 0x009B: /* 'BrtFileRecover' */
|
||||||
case 0x0224: /* 'BrtFileSharing' */
|
case 0x0224: /* 'BrtFileSharing' */
|
||||||
case 0x02A4: /* 'BrtFileSharingIso' */
|
case 0x02A4: /* 'BrtFileSharingIso' */
|
||||||
@ -12653,12 +12666,7 @@ function parse_wb_bin(data, opts) {
|
|||||||
case 0x084D: /* 'BrtModelTable' */
|
case 0x084D: /* 'BrtModelTable' */
|
||||||
case 0x0225: /* 'BrtOleSize' */
|
case 0x0225: /* 'BrtOleSize' */
|
||||||
case 0x0805: /* 'BrtPivotTableRef' */
|
case 0x0805: /* 'BrtPivotTableRef' */
|
||||||
case 0x0169: /* 'BrtPlaceholderName' */
|
|
||||||
case 0x0254: /* 'BrtSmartTagType' */
|
case 0x0254: /* 'BrtSmartTagType' */
|
||||||
case 0x029B: /* 'BrtSupAddin' */
|
|
||||||
case 0x0163: /* 'BrtSupBookSrc' */
|
|
||||||
case 0x0166: /* 'BrtSupSame' */
|
|
||||||
case 0x0165: /* 'BrtSupSelf' */
|
|
||||||
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
case 0x081C: /* 'BrtTableSlicerCacheID' */
|
||||||
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
case 0x081B: /* 'BrtTableSlicerCacheIDs' */
|
||||||
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
case 0x0822: /* 'BrtTimelineCachePivotCacheID' */
|
||||||
@ -15081,7 +15089,7 @@ var XLSBRecordEnum = {
|
|||||||
0x0160: { n:"BrtListTrFmla", f:parsenoop },
|
0x0160: { n:"BrtListTrFmla", f:parsenoop },
|
||||||
0x0161: { n:"BrtBeginExternals", f:parsenoop },
|
0x0161: { n:"BrtBeginExternals", f:parsenoop },
|
||||||
0x0162: { n:"BrtEndExternals", f:parsenoop },
|
0x0162: { n:"BrtEndExternals", f:parsenoop },
|
||||||
0x0163: { n:"BrtSupBookSrc", f:parsenoop },
|
0x0163: { n:"BrtSupBookSrc", f:parse_RelID},
|
||||||
0x0165: { n:"BrtSupSelf", f:parsenoop },
|
0x0165: { n:"BrtSupSelf", f:parsenoop },
|
||||||
0x0166: { n:"BrtSupSame", f:parsenoop },
|
0x0166: { n:"BrtSupSame", f:parsenoop },
|
||||||
0x0167: { n:"BrtSupTabs", f:parsenoop },
|
0x0167: { n:"BrtSupTabs", f:parsenoop },
|
||||||
|
Loading…
Reference in New Issue
Block a user