@loaders.gl/excel 4.0.0-alpha.5 → 4.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +1444 -287
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/excel-loader.js +29 -0
- package/dist/es5/excel-loader.js.map +1 -0
- package/dist/es5/index.js +42 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/encode-excel.js +2 -0
- package/dist/es5/lib/encode-excel.js.map +1 -0
- package/dist/es5/lib/parse-excel.js +31 -0
- package/dist/es5/lib/parse-excel.js.map +1 -0
- package/dist/es5/workers/excel-worker.js +6 -0
- package/dist/es5/workers/excel-worker.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/excel-loader.js +21 -0
- package/dist/esm/excel-loader.js.map +1 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/encode-excel.js +2 -0
- package/dist/esm/lib/encode-excel.js.map +1 -0
- package/dist/esm/lib/parse-excel.js +25 -0
- package/dist/esm/lib/parse-excel.js.map +1 -0
- package/dist/esm/workers/excel-worker.js +4 -0
- package/dist/esm/workers/excel-worker.js.map +1 -0
- package/dist/excel-loader.d.ts +3 -13
- package/dist/excel-loader.d.ts.map +1 -1
- package/dist/excel-loader.js +29 -18
- package/dist/excel-worker.js +1502 -311
- package/dist/index.d.ts +4 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -7
- package/dist/lib/encode-excel.js +80 -1
- package/dist/lib/parse-excel.d.ts +3 -1
- package/dist/lib/parse-excel.d.ts.map +1 -1
- package/dist/lib/parse-excel.js +44 -29
- package/dist/workers/excel-worker.js +5 -4
- package/package.json +6 -6
- package/src/excel-loader.ts +4 -1
- package/src/index.ts +10 -6
- package/src/lib/parse-excel.ts +5 -2
- package/dist/bundle.js.map +0 -1
- package/dist/excel-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/encode-excel.js.map +0 -1
- package/dist/lib/parse-excel.js.map +0 -1
- package/dist/workers/excel-worker.js.map +0 -1
package/dist/dist.min.js
CHANGED
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
// ../../node_modules/xlsx/dist/cpexcel.js
|
|
69
69
|
var require_cpexcel = __commonJS({
|
|
70
70
|
"../../node_modules/xlsx/dist/cpexcel.js"(exports, module) {
|
|
71
|
-
var cptable2 = { version: "1.
|
|
71
|
+
var cptable2 = { version: "1.15.0" };
|
|
72
72
|
cptable2[437] = function() {
|
|
73
73
|
var d = "\0\x07\b \n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0", D = [], e = {};
|
|
74
74
|
for (var i = 0; i != d.length; ++i) {
|
|
@@ -3131,6 +3131,15 @@
|
|
|
3131
3131
|
}
|
|
3132
3132
|
return { "enc": e, "dec": D };
|
|
3133
3133
|
}();
|
|
3134
|
+
cptable2[28591] = function() {
|
|
3135
|
+
var d = "\0\x07\b \n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF", D = [], e = {};
|
|
3136
|
+
for (var i = 0; i != d.length; ++i) {
|
|
3137
|
+
if (d.charCodeAt(i) !== 65533)
|
|
3138
|
+
e[d.charAt(i)] = i;
|
|
3139
|
+
D[i] = d.charAt(i);
|
|
3140
|
+
}
|
|
3141
|
+
return { "enc": e, "dec": D };
|
|
3142
|
+
}();
|
|
3134
3143
|
if (typeof module !== "undefined" && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === "undefined")
|
|
3135
3144
|
module.exports = cptable2;
|
|
3136
3145
|
(function(root, factory) {
|
|
@@ -3894,7 +3903,7 @@
|
|
|
3894
3903
|
module.exports = e();
|
|
3895
3904
|
else if (typeof define == "function" && define.amd && typeof DO_NOT_EXPORT_JSZIP == "undefined") {
|
|
3896
3905
|
JSZipSync = e();
|
|
3897
|
-
define([], e);
|
|
3906
|
+
define("j", [], e);
|
|
3898
3907
|
} else {
|
|
3899
3908
|
var f;
|
|
3900
3909
|
typeof globalThis != "undefined" ? f = globalThis : typeof window != "undefined" ? f = window : typeof global != "undefined" ? f = global : typeof $ != "undefined" && $.global ? f = $.global : typeof self != "undefined" && (f = self), f.JSZipSync = e();
|
|
@@ -9544,7 +9553,7 @@
|
|
|
9544
9553
|
"../../node_modules/xlsx/xlsx.js"(exports, module) {
|
|
9545
9554
|
var XLSX = {};
|
|
9546
9555
|
function make_xlsx_lib(XLSX2) {
|
|
9547
|
-
XLSX2.version = "0.17.
|
|
9556
|
+
XLSX2.version = "0.17.5";
|
|
9548
9557
|
var current_codepage = 1200, current_ansi = 1252;
|
|
9549
9558
|
if (typeof module !== "undefined" && typeof __require !== "undefined") {
|
|
9550
9559
|
if (typeof cptable === "undefined") {
|
|
@@ -11705,7 +11714,8 @@
|
|
|
11705
11714
|
break;
|
|
11706
11715
|
fat_addrs.push(q2);
|
|
11707
11716
|
}
|
|
11708
|
-
|
|
11717
|
+
if (cnt >= 1)
|
|
11718
|
+
sleuth_fat(__readInt32LE(sector, ssz - 4), cnt - 1, sectors, ssz, fat_addrs);
|
|
11709
11719
|
}
|
|
11710
11720
|
}
|
|
11711
11721
|
function get_sector_list(sectors, start, fat_addrs, ssz, chkd) {
|
|
@@ -13059,8 +13069,10 @@
|
|
|
13059
13069
|
}
|
|
13060
13070
|
function fuzzynum(s) {
|
|
13061
13071
|
var v = Number(s);
|
|
13062
|
-
if (
|
|
13072
|
+
if (isFinite(v))
|
|
13063
13073
|
return v;
|
|
13074
|
+
if (!isNaN(v))
|
|
13075
|
+
return NaN;
|
|
13064
13076
|
if (!/\d/.test(s))
|
|
13065
13077
|
return v;
|
|
13066
13078
|
var wt = 1;
|
|
@@ -13141,11 +13153,11 @@
|
|
|
13141
13153
|
}
|
|
13142
13154
|
function safegetzipfile(zip, file) {
|
|
13143
13155
|
var k = zip.FullPaths || keys(zip.files);
|
|
13144
|
-
var f = file.toLowerCase(), g = f.replace(
|
|
13156
|
+
var f = file.toLowerCase().replace(/[\/]/g, "\\"), g = f.replace(/\\/g, "/");
|
|
13145
13157
|
for (var i2 = 0; i2 < k.length; ++i2) {
|
|
13146
|
-
var n = k[i2].toLowerCase();
|
|
13158
|
+
var n = k[i2].replace(/^Root Entry[\/]/, "").toLowerCase();
|
|
13147
13159
|
if (f == n || g == n)
|
|
13148
|
-
return zip.files[k[i2]];
|
|
13160
|
+
return zip.files ? zip.files[k[i2]] : zip.FileIndex[i2];
|
|
13149
13161
|
}
|
|
13150
13162
|
return null;
|
|
13151
13163
|
}
|
|
@@ -14070,7 +14082,7 @@
|
|
|
14070
14082
|
for (cntbyte = 1; cntbyte < 4 && tmpbyte & 128; ++cntbyte)
|
|
14071
14083
|
length += ((tmpbyte = data.read_shift(1)) & 127) << 7 * cntbyte;
|
|
14072
14084
|
tgt = data.l + length;
|
|
14073
|
-
var d =
|
|
14085
|
+
var d = R.f && R.f(data, length, opts);
|
|
14074
14086
|
data.l = tgt;
|
|
14075
14087
|
if (cb(d, R.n, RT))
|
|
14076
14088
|
return;
|
|
@@ -14331,11 +14343,12 @@
|
|
|
14331
14343
|
idx = 10 * idx + cc;
|
|
14332
14344
|
}
|
|
14333
14345
|
o.s.r = --idx;
|
|
14334
|
-
if (i2 === len ||
|
|
14346
|
+
if (i2 === len || cc != 10) {
|
|
14335
14347
|
o.e.c = o.s.c;
|
|
14336
14348
|
o.e.r = o.s.r;
|
|
14337
14349
|
return o;
|
|
14338
14350
|
}
|
|
14351
|
+
++i2;
|
|
14339
14352
|
for (idx = 0; i2 != len; ++i2) {
|
|
14340
14353
|
if ((cc = range.charCodeAt(i2) - 64) < 1 || cc > 26)
|
|
14341
14354
|
break;
|
|
@@ -14370,6 +14383,8 @@
|
|
|
14370
14383
|
return cell.w;
|
|
14371
14384
|
if (cell.t == "d" && !cell.z && o && o.dateNF)
|
|
14372
14385
|
cell.z = o.dateNF;
|
|
14386
|
+
if (cell.t == "e")
|
|
14387
|
+
return BErr[cell.v] || cell.v;
|
|
14373
14388
|
if (v == void 0)
|
|
14374
14389
|
return safe_format_cell(cell, cell.v);
|
|
14375
14390
|
return safe_format_cell(cell, v);
|
|
@@ -14436,7 +14451,10 @@
|
|
|
14436
14451
|
if (cell.v === null) {
|
|
14437
14452
|
if (cell.f)
|
|
14438
14453
|
cell.t = "n";
|
|
14439
|
-
else if (
|
|
14454
|
+
else if (o.nullError) {
|
|
14455
|
+
cell.t = "e";
|
|
14456
|
+
cell.v = 0;
|
|
14457
|
+
} else if (!o.sheetStubs)
|
|
14440
14458
|
continue;
|
|
14441
14459
|
else
|
|
14442
14460
|
cell.t = "z";
|
|
@@ -14563,6 +14581,19 @@
|
|
|
14563
14581
|
o.write_shift(1, 0);
|
|
14564
14582
|
return o;
|
|
14565
14583
|
}
|
|
14584
|
+
function parse_XLSBShortCell(data) {
|
|
14585
|
+
var iStyleRef = data.read_shift(2);
|
|
14586
|
+
iStyleRef += data.read_shift(1) << 16;
|
|
14587
|
+
data.l++;
|
|
14588
|
+
return { c: -1, iStyleRef };
|
|
14589
|
+
}
|
|
14590
|
+
function write_XLSBShortCell(cell, o) {
|
|
14591
|
+
if (o == null)
|
|
14592
|
+
o = new_buf(4);
|
|
14593
|
+
o.write_shift(3, cell.iStyleRef || cell.s);
|
|
14594
|
+
o.write_shift(1, 0);
|
|
14595
|
+
return o;
|
|
14596
|
+
}
|
|
14566
14597
|
var parse_XLSBCodeName = parse_XLWideString;
|
|
14567
14598
|
var write_XLSBCodeName = write_XLWideString;
|
|
14568
14599
|
function parse_XLNullableWideString(data) {
|
|
@@ -14786,7 +14817,10 @@
|
|
|
14786
14817
|
27: { n: "ContentStatus", t: VT_STRING },
|
|
14787
14818
|
28: { n: "Language", t: VT_STRING },
|
|
14788
14819
|
29: { n: "Version", t: VT_STRING },
|
|
14789
|
-
255: {}
|
|
14820
|
+
255: {},
|
|
14821
|
+
2147483648: { n: "Locale", t: VT_UI4 },
|
|
14822
|
+
2147483651: { n: "Behavior", t: VT_UI4 },
|
|
14823
|
+
1919054434: {}
|
|
14790
14824
|
};
|
|
14791
14825
|
var SummaryPIDSI = {
|
|
14792
14826
|
1: { n: "CodePage", t: VT_I2 },
|
|
@@ -14808,18 +14842,11 @@
|
|
|
14808
14842
|
17: { n: "Thumbnail", t: VT_CF },
|
|
14809
14843
|
18: { n: "Application", t: VT_STRING },
|
|
14810
14844
|
19: { n: "DocSecurity", t: VT_I4 },
|
|
14811
|
-
255: {}
|
|
14812
|
-
};
|
|
14813
|
-
var SpecialProperties = {
|
|
14845
|
+
255: {},
|
|
14814
14846
|
2147483648: { n: "Locale", t: VT_UI4 },
|
|
14815
14847
|
2147483651: { n: "Behavior", t: VT_UI4 },
|
|
14816
14848
|
1919054434: {}
|
|
14817
14849
|
};
|
|
14818
|
-
(function() {
|
|
14819
|
-
for (var y in SpecialProperties)
|
|
14820
|
-
if (Object.prototype.hasOwnProperty.call(SpecialProperties, y))
|
|
14821
|
-
DocSummaryPIDDSI[y] = SummaryPIDSI[y] = SpecialProperties[y];
|
|
14822
|
-
})();
|
|
14823
14850
|
var DocSummaryRE = evert_key(DocSummaryPIDDSI, "n");
|
|
14824
14851
|
var SummaryRE = evert_key(SummaryPIDSI, "n");
|
|
14825
14852
|
var CountryEnum = {
|
|
@@ -15276,7 +15303,8 @@
|
|
|
15276
15303
|
rel.Type = y.Type;
|
|
15277
15304
|
rel.Target = y.Target;
|
|
15278
15305
|
rel.Id = y.Id;
|
|
15279
|
-
|
|
15306
|
+
if (y.TargetMode)
|
|
15307
|
+
rel.TargetMode = y.TargetMode;
|
|
15280
15308
|
var canonictarget = y.TargetMode === "External" ? y.Target : resolve_path(y.Target, currentFilePath);
|
|
15281
15309
|
rels[canonictarget] = rel;
|
|
15282
15310
|
hash[y.Id] = rel;
|
|
@@ -15381,7 +15409,7 @@
|
|
|
15381
15409
|
return o.join("");
|
|
15382
15410
|
}
|
|
15383
15411
|
var write_meta_ods = function() {
|
|
15384
|
-
var payload = '
|
|
15412
|
+
var payload = '<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2"><office:meta><meta:generator>SheetJS ' + XLSX2.version + "</meta:generator></office:meta></office:document-meta>";
|
|
15385
15413
|
return function wmo() {
|
|
15386
15414
|
return payload;
|
|
15387
15415
|
};
|
|
@@ -15849,6 +15877,17 @@
|
|
|
15849
15877
|
throw new Error("VtUnalignedString must have positive length");
|
|
15850
15878
|
return parse_VtStringBase(blob, t, 0);
|
|
15851
15879
|
}
|
|
15880
|
+
function parse_VtVecLpwstrValue(blob) {
|
|
15881
|
+
var length = blob.read_shift(4);
|
|
15882
|
+
var ret = [];
|
|
15883
|
+
for (var i2 = 0; i2 != length; ++i2) {
|
|
15884
|
+
var start = blob.l;
|
|
15885
|
+
ret[i2] = blob.read_shift(0, "lpwstr").replace(chr0, "");
|
|
15886
|
+
if (blob.l - start & 2)
|
|
15887
|
+
blob.l += 2;
|
|
15888
|
+
}
|
|
15889
|
+
return ret;
|
|
15890
|
+
}
|
|
15852
15891
|
function parse_VtVecUnalignedLpstrValue(blob) {
|
|
15853
15892
|
var length = blob.read_shift(4);
|
|
15854
15893
|
var ret = [];
|
|
@@ -15856,24 +15895,21 @@
|
|
|
15856
15895
|
ret[i2] = blob.read_shift(0, "lpstr-cp").replace(chr0, "");
|
|
15857
15896
|
return ret;
|
|
15858
15897
|
}
|
|
15859
|
-
function parse_VtVecUnalignedLpstr(blob) {
|
|
15860
|
-
return parse_VtVecUnalignedLpstrValue(blob);
|
|
15861
|
-
}
|
|
15862
15898
|
function parse_VtHeadingPair(blob) {
|
|
15899
|
+
var start = blob.l;
|
|
15863
15900
|
var headingString = parse_TypedPropertyValue(blob, VT_USTR);
|
|
15901
|
+
if (blob[blob.l] == 0 && blob[blob.l + 1] == 0 && blob.l - start & 2)
|
|
15902
|
+
blob.l += 2;
|
|
15864
15903
|
var headerParts = parse_TypedPropertyValue(blob, VT_I4);
|
|
15865
15904
|
return [headingString, headerParts];
|
|
15866
15905
|
}
|
|
15867
15906
|
function parse_VtVecHeadingPairValue(blob) {
|
|
15868
15907
|
var cElements = blob.read_shift(4);
|
|
15869
15908
|
var out = [];
|
|
15870
|
-
for (var i2 = 0; i2
|
|
15909
|
+
for (var i2 = 0; i2 < cElements / 2; ++i2)
|
|
15871
15910
|
out.push(parse_VtHeadingPair(blob));
|
|
15872
15911
|
return out;
|
|
15873
15912
|
}
|
|
15874
|
-
function parse_VtVecHeadingPair(blob) {
|
|
15875
|
-
return parse_VtVecHeadingPairValue(blob);
|
|
15876
|
-
}
|
|
15877
15913
|
function parse_dictionary(blob, CodePage) {
|
|
15878
15914
|
var cnt = blob.read_shift(4);
|
|
15879
15915
|
var dict = {};
|
|
@@ -15906,7 +15942,7 @@
|
|
|
15906
15942
|
var t = blob.read_shift(2), ret, opts = _opts || {};
|
|
15907
15943
|
blob.l += 2;
|
|
15908
15944
|
if (type !== VT_VARIANT) {
|
|
15909
|
-
if (t !== type && VT_CUSTOM.indexOf(type) === -1)
|
|
15945
|
+
if (t !== type && VT_CUSTOM.indexOf(type) === -1 && !((type & 65534) == 4126 && (t & 65534) == 4126))
|
|
15910
15946
|
throw new Error("Expected type " + type + " saw " + t);
|
|
15911
15947
|
}
|
|
15912
15948
|
switch (type === VT_VARIANT ? t : type) {
|
|
@@ -15938,9 +15974,10 @@
|
|
|
15938
15974
|
case 81:
|
|
15939
15975
|
return parse_VtUnalignedString(blob, t).replace(chr0, "");
|
|
15940
15976
|
case 4108:
|
|
15941
|
-
return
|
|
15977
|
+
return parse_VtVecHeadingPairValue(blob);
|
|
15942
15978
|
case 4126:
|
|
15943
|
-
|
|
15979
|
+
case 4127:
|
|
15980
|
+
return t == 4127 ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);
|
|
15944
15981
|
default:
|
|
15945
15982
|
throw new Error("TypedPropertyValue unrecognized type " + type + " " + t);
|
|
15946
15983
|
}
|
|
@@ -16316,7 +16353,7 @@
|
|
|
16316
16353
|
function write_Bes(v, t, o) {
|
|
16317
16354
|
if (!o)
|
|
16318
16355
|
o = new_buf(2);
|
|
16319
|
-
o.write_shift(1, +v);
|
|
16356
|
+
o.write_shift(1, t == "e" ? +v : +!!v);
|
|
16320
16357
|
o.write_shift(1, t == "e" ? 1 : 0);
|
|
16321
16358
|
return o;
|
|
16322
16359
|
}
|
|
@@ -16442,19 +16479,22 @@
|
|
|
16442
16479
|
return url;
|
|
16443
16480
|
}
|
|
16444
16481
|
function parse_FileMoniker(blob) {
|
|
16445
|
-
blob.
|
|
16482
|
+
var cAnti = blob.read_shift(2);
|
|
16483
|
+
var preamble = "";
|
|
16484
|
+
while (cAnti-- > 0)
|
|
16485
|
+
preamble += "../";
|
|
16446
16486
|
var ansiPath = blob.read_shift(0, "lpstr-ansi");
|
|
16447
16487
|
blob.l += 2;
|
|
16448
16488
|
if (blob.read_shift(2) != 57005)
|
|
16449
16489
|
throw new Error("Bad FileMoniker");
|
|
16450
16490
|
var sz = blob.read_shift(4);
|
|
16451
16491
|
if (sz === 0)
|
|
16452
|
-
return ansiPath.replace(/\\/g, "/");
|
|
16492
|
+
return preamble + ansiPath.replace(/\\/g, "/");
|
|
16453
16493
|
var bytes = blob.read_shift(4);
|
|
16454
16494
|
if (blob.read_shift(2) != 3)
|
|
16455
16495
|
throw new Error("Bad FileMoniker");
|
|
16456
16496
|
var unicodePath = blob.read_shift(bytes >> 1, "utf16le").replace(chr0, "");
|
|
16457
|
-
return unicodePath;
|
|
16497
|
+
return preamble + unicodePath;
|
|
16458
16498
|
}
|
|
16459
16499
|
function parse_HyperlinkMoniker(blob, length) {
|
|
16460
16500
|
var clsid = blob.read_shift(16);
|
|
@@ -16473,6 +16513,15 @@
|
|
|
16473
16513
|
var o = len > 0 ? blob.read_shift(len, "utf16le").replace(chr0, "") : "";
|
|
16474
16514
|
return o;
|
|
16475
16515
|
}
|
|
16516
|
+
function write_HyperlinkString(str, o) {
|
|
16517
|
+
if (!o)
|
|
16518
|
+
o = new_buf(6 + str.length * 2);
|
|
16519
|
+
o.write_shift(4, 1 + str.length);
|
|
16520
|
+
for (var i2 = 0; i2 < str.length; ++i2)
|
|
16521
|
+
o.write_shift(2, str.charCodeAt(i2));
|
|
16522
|
+
o.write_shift(2, 0);
|
|
16523
|
+
return o;
|
|
16524
|
+
}
|
|
16476
16525
|
function parse_Hyperlink(blob, length) {
|
|
16477
16526
|
var end = blob.l + length;
|
|
16478
16527
|
var sVer = blob.read_shift(4);
|
|
@@ -16501,6 +16550,8 @@
|
|
|
16501
16550
|
target += "#" + Loc;
|
|
16502
16551
|
if (!target)
|
|
16503
16552
|
target = "#" + Loc;
|
|
16553
|
+
if (flags & 2 && target.charAt(0) == "/" && target.charAt(1) != "/")
|
|
16554
|
+
target = "file://" + target;
|
|
16504
16555
|
var out = { Target: target };
|
|
16505
16556
|
if (guid)
|
|
16506
16557
|
out.guid = guid;
|
|
@@ -16513,7 +16564,10 @@
|
|
|
16513
16564
|
function write_Hyperlink(hl) {
|
|
16514
16565
|
var out = new_buf(512), i2 = 0;
|
|
16515
16566
|
var Target = hl.Target;
|
|
16516
|
-
|
|
16567
|
+
if (Target.slice(0, 7) == "file://")
|
|
16568
|
+
Target = Target.slice(7);
|
|
16569
|
+
var hashidx = Target.indexOf("#");
|
|
16570
|
+
var F = hashidx > -1 ? 31 : 23;
|
|
16517
16571
|
switch (Target.charAt(0)) {
|
|
16518
16572
|
case "#":
|
|
16519
16573
|
F = 28;
|
|
@@ -16529,18 +16583,18 @@
|
|
|
16529
16583
|
out.write_shift(4, data[i2]);
|
|
16530
16584
|
if (F == 28) {
|
|
16531
16585
|
Target = Target.slice(1);
|
|
16532
|
-
|
|
16533
|
-
for (i2 = 0; i2 < Target.length; ++i2)
|
|
16534
|
-
out.write_shift(2, Target.charCodeAt(i2));
|
|
16535
|
-
out.write_shift(2, 0);
|
|
16586
|
+
write_HyperlinkString(Target, out);
|
|
16536
16587
|
} else if (F & 2) {
|
|
16537
16588
|
data = "e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" ");
|
|
16538
16589
|
for (i2 = 0; i2 < data.length; ++i2)
|
|
16539
16590
|
out.write_shift(1, parseInt(data[i2], 16));
|
|
16540
|
-
|
|
16541
|
-
|
|
16542
|
-
|
|
16591
|
+
var Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;
|
|
16592
|
+
out.write_shift(4, 2 * (Pretarget.length + 1));
|
|
16593
|
+
for (i2 = 0; i2 < Pretarget.length; ++i2)
|
|
16594
|
+
out.write_shift(2, Pretarget.charCodeAt(i2));
|
|
16543
16595
|
out.write_shift(2, 0);
|
|
16596
|
+
if (F & 8)
|
|
16597
|
+
write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx + 1) : "", out);
|
|
16544
16598
|
} else {
|
|
16545
16599
|
data = "03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" ");
|
|
16546
16600
|
for (i2 = 0; i2 < data.length; ++i2)
|
|
@@ -16549,9 +16603,9 @@
|
|
|
16549
16603
|
while (Target.slice(P * 3, P * 3 + 3) == "../" || Target.slice(P * 3, P * 3 + 3) == "..\\")
|
|
16550
16604
|
++P;
|
|
16551
16605
|
out.write_shift(2, P);
|
|
16552
|
-
out.write_shift(4, Target.length + 1);
|
|
16553
|
-
for (i2 = 0; i2 < Target.length; ++i2)
|
|
16554
|
-
out.write_shift(1, Target.charCodeAt(i2) & 255);
|
|
16606
|
+
out.write_shift(4, Target.length - 3 * P + 1);
|
|
16607
|
+
for (i2 = 0; i2 < Target.length - 3 * P; ++i2)
|
|
16608
|
+
out.write_shift(1, Target.charCodeAt(i2 + 3 * P) & 255);
|
|
16555
16609
|
out.write_shift(1, 0);
|
|
16556
16610
|
out.write_shift(2, 65535);
|
|
16557
16611
|
out.write_shift(2, 57005);
|
|
@@ -16798,7 +16852,7 @@
|
|
|
16798
16852
|
}
|
|
16799
16853
|
function parse_WsBool(blob, length, opts) {
|
|
16800
16854
|
var flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);
|
|
16801
|
-
return { fDialog: flags & 16 };
|
|
16855
|
+
return { fDialog: flags & 16, fBelow: flags & 64, fRight: flags & 128 };
|
|
16802
16856
|
}
|
|
16803
16857
|
function parse_BoundSheet8(blob, length, opts) {
|
|
16804
16858
|
var pos = blob.read_shift(4);
|
|
@@ -17001,6 +17055,8 @@
|
|
|
17001
17055
|
return o;
|
|
17002
17056
|
}
|
|
17003
17057
|
function parse_Label(blob, length, opts) {
|
|
17058
|
+
if (opts.biffguess && opts.biff == 2)
|
|
17059
|
+
opts.biff = 5;
|
|
17004
17060
|
var target = blob.l + length;
|
|
17005
17061
|
var cell = parse_XLSCell(blob, 6);
|
|
17006
17062
|
if (opts.biff == 2)
|
|
@@ -17147,7 +17203,10 @@
|
|
|
17147
17203
|
o.write_shift(2, data.numFmtId || 0);
|
|
17148
17204
|
o.write_shift(2, ixfeP << 4);
|
|
17149
17205
|
}
|
|
17150
|
-
|
|
17206
|
+
var f = 0;
|
|
17207
|
+
if (data.numFmtId > 0 && b5)
|
|
17208
|
+
f |= 1024;
|
|
17209
|
+
o.write_shift(4, f);
|
|
17151
17210
|
o.write_shift(4, 0);
|
|
17152
17211
|
if (!b5)
|
|
17153
17212
|
o.write_shift(4, 0);
|
|
@@ -17174,7 +17233,7 @@
|
|
|
17174
17233
|
}
|
|
17175
17234
|
function parse_BoolErr(blob, length, opts) {
|
|
17176
17235
|
var cell = parse_XLSCell(blob, 6);
|
|
17177
|
-
if (opts.biff == 2)
|
|
17236
|
+
if (opts.biff == 2 || length == 9)
|
|
17178
17237
|
++blob.l;
|
|
17179
17238
|
var val = parse_Bes(blob, 2);
|
|
17180
17239
|
cell.val = val;
|
|
@@ -17187,7 +17246,9 @@
|
|
|
17187
17246
|
write_Bes(v, t, o);
|
|
17188
17247
|
return o;
|
|
17189
17248
|
}
|
|
17190
|
-
function parse_Number(blob) {
|
|
17249
|
+
function parse_Number(blob, length, opts) {
|
|
17250
|
+
if (opts.biffguess && opts.biff == 2)
|
|
17251
|
+
opts.biff = 5;
|
|
17191
17252
|
var cell = parse_XLSCell(blob, 6);
|
|
17192
17253
|
var xnum = parse_Xnum(blob, 8);
|
|
17193
17254
|
cell.val = xnum;
|
|
@@ -17532,6 +17593,21 @@
|
|
|
17532
17593
|
o.level = flags >> 8 & 7;
|
|
17533
17594
|
return o;
|
|
17534
17595
|
}
|
|
17596
|
+
function write_ColInfo(col, idx) {
|
|
17597
|
+
var o = new_buf(12);
|
|
17598
|
+
o.write_shift(2, idx);
|
|
17599
|
+
o.write_shift(2, idx);
|
|
17600
|
+
o.write_shift(2, col.width * 256);
|
|
17601
|
+
o.write_shift(2, 0);
|
|
17602
|
+
var f = 0;
|
|
17603
|
+
if (col.hidden)
|
|
17604
|
+
f |= 1;
|
|
17605
|
+
o.write_shift(1, f);
|
|
17606
|
+
f = col.level || 0;
|
|
17607
|
+
o.write_shift(1, f);
|
|
17608
|
+
o.write_shift(2, 0);
|
|
17609
|
+
return o;
|
|
17610
|
+
}
|
|
17535
17611
|
function parse_Setup(blob, length) {
|
|
17536
17612
|
var o = {};
|
|
17537
17613
|
if (length < 32)
|
|
@@ -17572,6 +17648,8 @@
|
|
|
17572
17648
|
return o;
|
|
17573
17649
|
}
|
|
17574
17650
|
function parse_BIFF2STR(blob, length, opts) {
|
|
17651
|
+
if (opts.biffguess && opts.biff == 5)
|
|
17652
|
+
opts.biff = 2;
|
|
17575
17653
|
var cell = parse_XLSCell(blob, 6);
|
|
17576
17654
|
++blob.l;
|
|
17577
17655
|
var str = parse_XLUnicodeString2(blob, length - 7, opts);
|
|
@@ -17698,6 +17776,11 @@
|
|
|
17698
17776
|
87: 1252,
|
|
17699
17777
|
88: 1252,
|
|
17700
17778
|
89: 1252,
|
|
17779
|
+
108: 863,
|
|
17780
|
+
134: 737,
|
|
17781
|
+
135: 852,
|
|
17782
|
+
136: 857,
|
|
17783
|
+
204: 1257,
|
|
17701
17784
|
255: 16969
|
|
17702
17785
|
};
|
|
17703
17786
|
var dbf_reverse_map = evert({
|
|
@@ -17747,10 +17830,11 @@
|
|
|
17747
17830
|
}
|
|
17748
17831
|
prep_blob(d, 0);
|
|
17749
17832
|
var ft = d.read_shift(1);
|
|
17750
|
-
var memo =
|
|
17833
|
+
var memo = !!(ft & 136);
|
|
17751
17834
|
var vfp = false, l7 = false;
|
|
17752
17835
|
switch (ft) {
|
|
17753
17836
|
case 2:
|
|
17837
|
+
break;
|
|
17754
17838
|
case 3:
|
|
17755
17839
|
break;
|
|
17756
17840
|
case 48:
|
|
@@ -17759,24 +17843,21 @@
|
|
|
17759
17843
|
break;
|
|
17760
17844
|
case 49:
|
|
17761
17845
|
vfp = true;
|
|
17846
|
+
memo = true;
|
|
17762
17847
|
break;
|
|
17763
17848
|
case 131:
|
|
17764
|
-
memo = true;
|
|
17765
17849
|
break;
|
|
17766
17850
|
case 139:
|
|
17767
|
-
memo = true;
|
|
17768
17851
|
break;
|
|
17769
17852
|
case 140:
|
|
17770
|
-
memo = true;
|
|
17771
17853
|
l7 = true;
|
|
17772
17854
|
break;
|
|
17773
17855
|
case 245:
|
|
17774
|
-
memo = true;
|
|
17775
17856
|
break;
|
|
17776
17857
|
default:
|
|
17777
17858
|
throw new Error("DBF Unsupported Version: " + ft.toString(16));
|
|
17778
17859
|
}
|
|
17779
|
-
var nrow = 0, fpos =
|
|
17860
|
+
var nrow = 0, fpos = 521;
|
|
17780
17861
|
if (ft == 2)
|
|
17781
17862
|
nrow = d.read_shift(2);
|
|
17782
17863
|
d.l += 3;
|
|
@@ -17787,7 +17868,7 @@
|
|
|
17787
17868
|
if (ft != 2)
|
|
17788
17869
|
fpos = d.read_shift(2);
|
|
17789
17870
|
var rlen = d.read_shift(2);
|
|
17790
|
-
var current_cp = 1252;
|
|
17871
|
+
var current_cp = opts.codepage || 1252;
|
|
17791
17872
|
if (ft != 2) {
|
|
17792
17873
|
d.l += 16;
|
|
17793
17874
|
d.read_shift(1);
|
|
@@ -17799,8 +17880,9 @@
|
|
|
17799
17880
|
if (l7)
|
|
17800
17881
|
d.l += 36;
|
|
17801
17882
|
var fields = [], field = {};
|
|
17802
|
-
var hend = fpos - 10 - (vfp ? 264 : 0)
|
|
17803
|
-
|
|
17883
|
+
var hend = Math.min(d.length, ft == 2 ? 521 : fpos - 10 - (vfp ? 264 : 0));
|
|
17884
|
+
var ww = l7 ? 32 : 11;
|
|
17885
|
+
while (d.l < hend && d[d.l] != 13) {
|
|
17804
17886
|
field = {};
|
|
17805
17887
|
field.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l + ww)).replace(/[\u0000\r\n].*$/g, "");
|
|
17806
17888
|
d.l += ww;
|
|
@@ -17825,6 +17907,9 @@
|
|
|
17825
17907
|
if (opts.WTF)
|
|
17826
17908
|
console.log("Skipping " + field.name + ":" + field.type);
|
|
17827
17909
|
break;
|
|
17910
|
+
case "+":
|
|
17911
|
+
case "0":
|
|
17912
|
+
case "@":
|
|
17828
17913
|
case "C":
|
|
17829
17914
|
case "D":
|
|
17830
17915
|
case "F":
|
|
@@ -17835,9 +17920,6 @@
|
|
|
17835
17920
|
case "O":
|
|
17836
17921
|
case "T":
|
|
17837
17922
|
case "Y":
|
|
17838
|
-
case "0":
|
|
17839
|
-
case "@":
|
|
17840
|
-
case "+":
|
|
17841
17923
|
break;
|
|
17842
17924
|
default:
|
|
17843
17925
|
throw new Error("Unknown Field Type: " + field.type);
|
|
@@ -17845,13 +17927,9 @@
|
|
|
17845
17927
|
}
|
|
17846
17928
|
if (d[d.l] !== 13)
|
|
17847
17929
|
d.l = fpos - 1;
|
|
17848
|
-
|
|
17849
|
-
d.l
|
|
17850
|
-
|
|
17851
|
-
if (d.read_shift(1) !== 13)
|
|
17852
|
-
throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]);
|
|
17853
|
-
d.l = fpos;
|
|
17854
|
-
}
|
|
17930
|
+
if (d.read_shift(1) !== 13)
|
|
17931
|
+
throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]);
|
|
17932
|
+
d.l = fpos;
|
|
17855
17933
|
var R = 0, C = 0;
|
|
17856
17934
|
out[0] = [];
|
|
17857
17935
|
for (C = 0; C != fields.length; ++C)
|
|
@@ -17871,8 +17949,8 @@
|
|
|
17871
17949
|
var s = cptable.utils.decode(current_cp, dd);
|
|
17872
17950
|
switch (fields[C].type) {
|
|
17873
17951
|
case "C":
|
|
17874
|
-
|
|
17875
|
-
|
|
17952
|
+
if (s.trim().length)
|
|
17953
|
+
out[R][C] = s.replace(/\s+$/, "");
|
|
17876
17954
|
break;
|
|
17877
17955
|
case "D":
|
|
17878
17956
|
if (s.length === 8)
|
|
@@ -17888,7 +17966,7 @@
|
|
|
17888
17966
|
out[R][C] = l7 ? dd.read_shift(-4, "i") ^ 2147483648 : dd.read_shift(4, "i");
|
|
17889
17967
|
break;
|
|
17890
17968
|
case "L":
|
|
17891
|
-
switch (s.toUpperCase()) {
|
|
17969
|
+
switch (s.trim().toUpperCase()) {
|
|
17892
17970
|
case "Y":
|
|
17893
17971
|
case "T":
|
|
17894
17972
|
out[R][C] = true;
|
|
@@ -17897,9 +17975,8 @@
|
|
|
17897
17975
|
case "F":
|
|
17898
17976
|
out[R][C] = false;
|
|
17899
17977
|
break;
|
|
17900
|
-
case "
|
|
17978
|
+
case "":
|
|
17901
17979
|
case "?":
|
|
17902
|
-
out[R][C] = false;
|
|
17903
17980
|
break;
|
|
17904
17981
|
default:
|
|
17905
17982
|
throw new Error("DBF Unrecognized L:|" + s + "|");
|
|
@@ -17911,7 +17988,9 @@
|
|
|
17911
17988
|
out[R][C] = "##MEMO##" + (l7 ? parseInt(s.trim(), 10) : dd.read_shift(4));
|
|
17912
17989
|
break;
|
|
17913
17990
|
case "N":
|
|
17914
|
-
|
|
17991
|
+
s = s.replace(/\u0000/g, "").trim();
|
|
17992
|
+
if (s && s != ".")
|
|
17993
|
+
out[R][C] = +s || 0;
|
|
17915
17994
|
break;
|
|
17916
17995
|
case "@":
|
|
17917
17996
|
out[R][C] = new Date(dd.read_shift(-8, "f") - 621356832e5);
|
|
@@ -18159,7 +18238,7 @@
|
|
|
18159
18238
|
S: 169,
|
|
18160
18239
|
c: 170,
|
|
18161
18240
|
R: 174,
|
|
18162
|
-
B: 180,
|
|
18241
|
+
"B ": 180,
|
|
18163
18242
|
0: 176,
|
|
18164
18243
|
1: 177,
|
|
18165
18244
|
2: 178,
|
|
@@ -18206,7 +18285,7 @@
|
|
|
18206
18285
|
case "binary":
|
|
18207
18286
|
return sylk_to_aoa_str(d, opts);
|
|
18208
18287
|
case "buffer":
|
|
18209
|
-
return sylk_to_aoa_str(d.toString("binary"), opts);
|
|
18288
|
+
return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d), opts);
|
|
18210
18289
|
case "array":
|
|
18211
18290
|
return sylk_to_aoa_str(cc2str(d), opts);
|
|
18212
18291
|
}
|
|
@@ -18237,14 +18316,18 @@
|
|
|
18237
18316
|
break;
|
|
18238
18317
|
case "O":
|
|
18239
18318
|
break;
|
|
18319
|
+
case "W":
|
|
18320
|
+
break;
|
|
18240
18321
|
case "P":
|
|
18241
18322
|
if (record[1].charAt(0) == "P")
|
|
18242
18323
|
formats.push(rstr.slice(3).replace(/;;/g, ";"));
|
|
18243
18324
|
break;
|
|
18244
18325
|
case "C":
|
|
18245
|
-
var C_seen_K = false, C_seen_X = false;
|
|
18326
|
+
var C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;
|
|
18246
18327
|
for (rj = 1; rj < record.length; ++rj)
|
|
18247
18328
|
switch (record[rj].charAt(0)) {
|
|
18329
|
+
case "A":
|
|
18330
|
+
break;
|
|
18248
18331
|
case "X":
|
|
18249
18332
|
C = parseInt(record[rj].slice(1)) - 1;
|
|
18250
18333
|
C_seen_X = true;
|
|
@@ -18276,17 +18359,41 @@
|
|
|
18276
18359
|
C_seen_K = true;
|
|
18277
18360
|
break;
|
|
18278
18361
|
case "E":
|
|
18362
|
+
C_seen_E = true;
|
|
18279
18363
|
var formula = rc_to_a1(record[rj].slice(1), { r: R, c: C });
|
|
18280
18364
|
arr[R][C] = [arr[R][C], formula];
|
|
18281
18365
|
break;
|
|
18366
|
+
case "S":
|
|
18367
|
+
C_seen_S = true;
|
|
18368
|
+
arr[R][C] = [arr[R][C], "S5S"];
|
|
18369
|
+
break;
|
|
18370
|
+
case "G":
|
|
18371
|
+
break;
|
|
18372
|
+
case "R":
|
|
18373
|
+
_R = parseInt(record[rj].slice(1)) - 1;
|
|
18374
|
+
break;
|
|
18375
|
+
case "C":
|
|
18376
|
+
_C = parseInt(record[rj].slice(1)) - 1;
|
|
18377
|
+
break;
|
|
18282
18378
|
default:
|
|
18283
18379
|
if (opts && opts.WTF)
|
|
18284
18380
|
throw new Error("SYLK bad record " + rstr);
|
|
18285
18381
|
}
|
|
18286
18382
|
if (C_seen_K) {
|
|
18287
|
-
arr[R][C]
|
|
18383
|
+
if (arr[R][C] && arr[R][C].length == 2)
|
|
18384
|
+
arr[R][C][0] = val;
|
|
18385
|
+
else
|
|
18386
|
+
arr[R][C] = val;
|
|
18288
18387
|
next_cell_format = null;
|
|
18289
18388
|
}
|
|
18389
|
+
if (C_seen_S) {
|
|
18390
|
+
if (C_seen_E)
|
|
18391
|
+
throw new Error("SYLK shared formula cannot have own formula");
|
|
18392
|
+
var shrbase = _R > -1 && arr[_R][_C];
|
|
18393
|
+
if (!shrbase || !shrbase[1])
|
|
18394
|
+
throw new Error("SYLK shared formula cannot find base");
|
|
18395
|
+
arr[R][C][1] = shift_formula_str(shrbase[1], { r: R - _R, c: C - _C });
|
|
18396
|
+
}
|
|
18290
18397
|
break;
|
|
18291
18398
|
case "F":
|
|
18292
18399
|
var F_seen = 0;
|
|
@@ -18401,9 +18508,9 @@
|
|
|
18401
18508
|
if (col.hidden)
|
|
18402
18509
|
rec += "0";
|
|
18403
18510
|
else {
|
|
18404
|
-
if (typeof col.width == "number")
|
|
18511
|
+
if (typeof col.width == "number" && !col.wpx)
|
|
18405
18512
|
col.wpx = width2px(col.width);
|
|
18406
|
-
if (typeof col.wpx == "number")
|
|
18513
|
+
if (typeof col.wpx == "number" && !col.wch)
|
|
18407
18514
|
col.wch = px2char(col.wpx);
|
|
18408
18515
|
if (typeof col.wch == "number")
|
|
18409
18516
|
rec += Math.round(col.wch);
|
|
@@ -18462,7 +18569,7 @@
|
|
|
18462
18569
|
case "binary":
|
|
18463
18570
|
return dif_to_aoa_str(d, opts);
|
|
18464
18571
|
case "buffer":
|
|
18465
|
-
return dif_to_aoa_str(d.toString("binary"), opts);
|
|
18572
|
+
return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d), opts);
|
|
18466
18573
|
case "array":
|
|
18467
18574
|
return dif_to_aoa_str(cc2str(d), opts);
|
|
18468
18575
|
}
|
|
@@ -18481,7 +18588,10 @@
|
|
|
18481
18588
|
var metadata = records[ri].trim().split(",");
|
|
18482
18589
|
var type = metadata[0], value = metadata[1];
|
|
18483
18590
|
++ri;
|
|
18484
|
-
var data = records[ri]
|
|
18591
|
+
var data = records[ri] || "";
|
|
18592
|
+
while ((data.match(/["]/g) || []).length & 1 && ri < records.length - 1)
|
|
18593
|
+
data += "\n" + records[++ri];
|
|
18594
|
+
data = data.trim();
|
|
18485
18595
|
switch (+type) {
|
|
18486
18596
|
case -1:
|
|
18487
18597
|
if (data === "BOT") {
|
|
@@ -18506,6 +18616,9 @@
|
|
|
18506
18616
|
break;
|
|
18507
18617
|
case 1:
|
|
18508
18618
|
data = data.slice(1, data.length - 1);
|
|
18619
|
+
data = data.replace(/""/g, '"');
|
|
18620
|
+
if (DIF_XL && data && data.match(/^=".*"$/))
|
|
18621
|
+
data = data.slice(2, -1);
|
|
18509
18622
|
arr[R][C++] = data !== "" ? data : null;
|
|
18510
18623
|
break;
|
|
18511
18624
|
}
|
|
@@ -18725,12 +18838,12 @@
|
|
|
18725
18838
|
function set_text_arr(data, arr, R, C, o) {
|
|
18726
18839
|
if (o.raw)
|
|
18727
18840
|
arr[R][C] = data;
|
|
18728
|
-
else if (data === "
|
|
18841
|
+
else if (data === "") {
|
|
18842
|
+
} else if (data === "TRUE")
|
|
18729
18843
|
arr[R][C] = true;
|
|
18730
18844
|
else if (data === "FALSE")
|
|
18731
18845
|
arr[R][C] = false;
|
|
18732
|
-
else if (data
|
|
18733
|
-
} else if (!isNaN(fuzzynum(data)))
|
|
18846
|
+
else if (!isNaN(fuzzynum(data)))
|
|
18734
18847
|
arr[R][C] = fuzzynum(data);
|
|
18735
18848
|
else if (!isNaN(fuzzydate(data).getDate()))
|
|
18736
18849
|
arr[R][C] = parseDate(data);
|
|
@@ -18770,12 +18883,14 @@
|
|
|
18770
18883
|
var guess_seps = {
|
|
18771
18884
|
44: ",",
|
|
18772
18885
|
9: " ",
|
|
18773
|
-
59: ";"
|
|
18886
|
+
59: ";",
|
|
18887
|
+
124: "|"
|
|
18774
18888
|
};
|
|
18775
18889
|
var guess_sep_weights = {
|
|
18776
18890
|
44: 3,
|
|
18777
18891
|
9: 2,
|
|
18778
|
-
59: 1
|
|
18892
|
+
59: 1,
|
|
18893
|
+
124: 0
|
|
18779
18894
|
};
|
|
18780
18895
|
function guess_sep(str) {
|
|
18781
18896
|
var cnt = {}, instr = false, end = 0, cc = 0;
|
|
@@ -18800,7 +18915,7 @@
|
|
|
18800
18915
|
cc.sort(function(a, b) {
|
|
18801
18916
|
return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]];
|
|
18802
18917
|
});
|
|
18803
|
-
return guess_seps[cc.pop()[1]];
|
|
18918
|
+
return guess_seps[cc.pop()[1]] || 44;
|
|
18804
18919
|
}
|
|
18805
18920
|
function dsv_to_sheet_str(str, opts) {
|
|
18806
18921
|
var o = opts || {};
|
|
@@ -18816,11 +18931,14 @@
|
|
|
18816
18931
|
} else if (str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10) {
|
|
18817
18932
|
sep = str.charAt(4);
|
|
18818
18933
|
str = str.slice(6);
|
|
18819
|
-
}
|
|
18820
|
-
|
|
18934
|
+
} else
|
|
18935
|
+
sep = guess_sep(str.slice(0, 1024));
|
|
18936
|
+
} else if (o && o.FS)
|
|
18937
|
+
sep = o.FS;
|
|
18938
|
+
else
|
|
18821
18939
|
sep = guess_sep(str.slice(0, 1024));
|
|
18822
18940
|
var R = 0, C = 0, v = 0;
|
|
18823
|
-
var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc = 0;
|
|
18941
|
+
var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc = 0, startcc = str.charCodeAt(0);
|
|
18824
18942
|
str = str.replace(/\r\n/mg, "\n");
|
|
18825
18943
|
var _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null;
|
|
18826
18944
|
function finish_cell() {
|
|
@@ -18888,6 +19006,7 @@
|
|
|
18888
19006
|
} else
|
|
18889
19007
|
ws[encode_cell({ c: C, r: R })] = cell;
|
|
18890
19008
|
start = end + 1;
|
|
19009
|
+
startcc = str.charCodeAt(start);
|
|
18891
19010
|
if (range.e.c < C)
|
|
18892
19011
|
range.e.c = C;
|
|
18893
19012
|
if (range.e.r < R)
|
|
@@ -18905,7 +19024,8 @@
|
|
|
18905
19024
|
for (; end < str.length; ++end)
|
|
18906
19025
|
switch (cc = str.charCodeAt(end)) {
|
|
18907
19026
|
case 34:
|
|
18908
|
-
|
|
19027
|
+
if (startcc === 34)
|
|
19028
|
+
instr = !instr;
|
|
18909
19029
|
break;
|
|
18910
19030
|
case sepcc:
|
|
18911
19031
|
case 10:
|
|
@@ -18924,6 +19044,8 @@
|
|
|
18924
19044
|
function prn_to_sheet_str(str, opts) {
|
|
18925
19045
|
if (!(opts && opts.PRN))
|
|
18926
19046
|
return dsv_to_sheet_str(str, opts);
|
|
19047
|
+
if (opts.FS)
|
|
19048
|
+
return dsv_to_sheet_str(str, opts);
|
|
18927
19049
|
if (str.slice(0, 4) == "sep=")
|
|
18928
19050
|
return dsv_to_sheet_str(str, opts);
|
|
18929
19051
|
if (str.indexOf(" ") >= 0 || str.indexOf(",") >= 0 || str.indexOf(";") >= 0)
|
|
@@ -18945,7 +19067,7 @@
|
|
|
18945
19067
|
else if (opts.codepage && typeof cptable !== "undefined")
|
|
18946
19068
|
str = cptable.utils.decode(opts.codepage, d);
|
|
18947
19069
|
else
|
|
18948
|
-
str = d.toString("binary");
|
|
19070
|
+
str = has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d);
|
|
18949
19071
|
break;
|
|
18950
19072
|
case "array":
|
|
18951
19073
|
str = cc2str(d);
|
|
@@ -18958,8 +19080,10 @@
|
|
|
18958
19080
|
}
|
|
18959
19081
|
if (bytes[0] == 239 && bytes[1] == 187 && bytes[2] == 191)
|
|
18960
19082
|
str = utf8read(str.slice(3));
|
|
19083
|
+
else if (opts.type != "string" && opts.codepage == 65001)
|
|
19084
|
+
str = utf8read(str);
|
|
18961
19085
|
else if (opts.type == "binary" && typeof cptable !== "undefined" && opts.codepage)
|
|
18962
|
-
str = cptable.utils.decode(opts.codepage, cptable.utils.encode(
|
|
19086
|
+
str = cptable.utils.decode(opts.codepage, cptable.utils.encode(28591, str));
|
|
18963
19087
|
if (str.slice(0, 19) == "socialcalc:version:")
|
|
18964
19088
|
return ETH.to_sheet(opts.type == "string" ? str : utf8read(str), opts);
|
|
18965
19089
|
return prn_to_sheet_str(str, opts);
|
|
@@ -19017,12 +19141,12 @@
|
|
|
19017
19141
|
var Enum = opts.Enum || WK1Enum;
|
|
19018
19142
|
while (data.l < data.length) {
|
|
19019
19143
|
var RT = data.read_shift(2);
|
|
19020
|
-
var R = Enum[RT] || Enum[
|
|
19144
|
+
var R = Enum[RT] || Enum[65535];
|
|
19021
19145
|
var length = data.read_shift(2);
|
|
19022
19146
|
var tgt = data.l + length;
|
|
19023
|
-
var d =
|
|
19147
|
+
var d = R.f && R.f(data, length, opts);
|
|
19024
19148
|
data.l = tgt;
|
|
19025
|
-
if (cb(d, R
|
|
19149
|
+
if (cb(d, R, RT))
|
|
19026
19150
|
return;
|
|
19027
19151
|
}
|
|
19028
19152
|
}
|
|
@@ -19044,22 +19168,19 @@
|
|
|
19044
19168
|
var o = opts || {};
|
|
19045
19169
|
if (DENSE != null && o.dense == null)
|
|
19046
19170
|
o.dense = DENSE;
|
|
19047
|
-
var s = o.dense ? [] : {}, n = "Sheet1", sidx = 0;
|
|
19048
|
-
var sheets = {}, snames = [
|
|
19171
|
+
var s = o.dense ? [] : {}, n = "Sheet1", next_n = "", sidx = 0;
|
|
19172
|
+
var sheets = {}, snames = [], realnames = [];
|
|
19049
19173
|
var refguess = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
19050
19174
|
var sheetRows = o.sheetRows || 0;
|
|
19051
|
-
if (d[2] ==
|
|
19175
|
+
if (d[2] == 0) {
|
|
19176
|
+
if (d[3] == 8 || d[3] == 9) {
|
|
19177
|
+
if (d.length >= 16 && d[14] == 5 && d[15] === 108)
|
|
19178
|
+
throw new Error("Unsupported Works 3 for Mac file");
|
|
19179
|
+
}
|
|
19180
|
+
}
|
|
19181
|
+
if (d[2] == 2) {
|
|
19052
19182
|
o.Enum = WK1Enum;
|
|
19053
|
-
|
|
19054
|
-
o.Enum = WK3Enum;
|
|
19055
|
-
else if (d[2] == 14) {
|
|
19056
|
-
o.Enum = WK3Enum;
|
|
19057
|
-
o.qpro = true;
|
|
19058
|
-
d.l = 0;
|
|
19059
|
-
} else
|
|
19060
|
-
throw new Error("Unrecognized LOTUS BOF " + d[2]);
|
|
19061
|
-
lotushopper(d, function(val, Rn, RT) {
|
|
19062
|
-
if (d[2] == 2)
|
|
19183
|
+
lotushopper(d, function(val, R, RT) {
|
|
19063
19184
|
switch (RT) {
|
|
19064
19185
|
case 0:
|
|
19065
19186
|
o.vers = val;
|
|
@@ -19069,13 +19190,20 @@
|
|
|
19069
19190
|
case 6:
|
|
19070
19191
|
refguess = val;
|
|
19071
19192
|
break;
|
|
19193
|
+
case 204:
|
|
19194
|
+
if (val)
|
|
19195
|
+
next_n = val;
|
|
19196
|
+
break;
|
|
19197
|
+
case 222:
|
|
19198
|
+
next_n = val;
|
|
19199
|
+
break;
|
|
19072
19200
|
case 15:
|
|
19201
|
+
case 51:
|
|
19073
19202
|
if (!o.qpro)
|
|
19074
19203
|
val[1].v = val[1].v.slice(1);
|
|
19075
19204
|
case 13:
|
|
19076
19205
|
case 14:
|
|
19077
19206
|
case 16:
|
|
19078
|
-
case 51:
|
|
19079
19207
|
if (RT == 14 && (val[2] & 112) == 112 && (val[2] & 15) > 1 && (val[2] & 15) < 15) {
|
|
19080
19208
|
val[1].z = o.dateNF || SSF._table[14];
|
|
19081
19209
|
if (o.cellDates) {
|
|
@@ -19083,6 +19211,28 @@
|
|
|
19083
19211
|
val[1].v = numdate(val[1].v);
|
|
19084
19212
|
}
|
|
19085
19213
|
}
|
|
19214
|
+
if (o.qpro) {
|
|
19215
|
+
if (val[3] > sidx) {
|
|
19216
|
+
s["!ref"] = encode_range(refguess);
|
|
19217
|
+
sheets[n] = s;
|
|
19218
|
+
snames.push(n);
|
|
19219
|
+
s = o.dense ? [] : {};
|
|
19220
|
+
refguess = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
19221
|
+
sidx = val[3];
|
|
19222
|
+
n = next_n || "Sheet" + (sidx + 1);
|
|
19223
|
+
next_n = "";
|
|
19224
|
+
}
|
|
19225
|
+
}
|
|
19226
|
+
var tmpcell = o.dense ? (s[val[0].r] || [])[val[0].c] : s[encode_cell(val[0])];
|
|
19227
|
+
if (tmpcell) {
|
|
19228
|
+
tmpcell.t = val[1].t;
|
|
19229
|
+
tmpcell.v = val[1].v;
|
|
19230
|
+
if (val[1].z != null)
|
|
19231
|
+
tmpcell.z = val[1].z;
|
|
19232
|
+
if (val[1].f != null)
|
|
19233
|
+
tmpcell.f = val[1].f;
|
|
19234
|
+
break;
|
|
19235
|
+
}
|
|
19086
19236
|
if (o.dense) {
|
|
19087
19237
|
if (!s[val[0].r])
|
|
19088
19238
|
s[val[0].r] = [];
|
|
@@ -19090,9 +19240,20 @@
|
|
|
19090
19240
|
} else
|
|
19091
19241
|
s[encode_cell(val[0])] = val[1];
|
|
19092
19242
|
break;
|
|
19243
|
+
default:
|
|
19093
19244
|
}
|
|
19094
|
-
|
|
19245
|
+
}, o);
|
|
19246
|
+
} else if (d[2] == 26 || d[2] == 14) {
|
|
19247
|
+
o.Enum = WK3Enum;
|
|
19248
|
+
if (d[2] == 14) {
|
|
19249
|
+
o.qpro = true;
|
|
19250
|
+
d.l = 0;
|
|
19251
|
+
}
|
|
19252
|
+
lotushopper(d, function(val, R, RT) {
|
|
19095
19253
|
switch (RT) {
|
|
19254
|
+
case 204:
|
|
19255
|
+
n = val;
|
|
19256
|
+
break;
|
|
19096
19257
|
case 22:
|
|
19097
19258
|
val[1].v = val[1].v.slice(1);
|
|
19098
19259
|
case 23:
|
|
@@ -19104,11 +19265,11 @@
|
|
|
19104
19265
|
if (val[3] > sidx) {
|
|
19105
19266
|
s["!ref"] = encode_range(refguess);
|
|
19106
19267
|
sheets[n] = s;
|
|
19268
|
+
snames.push(n);
|
|
19107
19269
|
s = o.dense ? [] : {};
|
|
19108
19270
|
refguess = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
19109
19271
|
sidx = val[3];
|
|
19110
19272
|
n = "Sheet" + (sidx + 1);
|
|
19111
|
-
snames.push(n);
|
|
19112
19273
|
}
|
|
19113
19274
|
if (sheetRows > 0 && val[0].r >= sheetRows)
|
|
19114
19275
|
break;
|
|
@@ -19123,29 +19284,187 @@
|
|
|
19123
19284
|
if (refguess.e.r < val[0].r)
|
|
19124
19285
|
refguess.e.r = val[0].r;
|
|
19125
19286
|
break;
|
|
19287
|
+
case 27:
|
|
19288
|
+
if (val[14e3])
|
|
19289
|
+
realnames[val[14e3][0]] = val[14e3][1];
|
|
19290
|
+
break;
|
|
19291
|
+
case 1537:
|
|
19292
|
+
realnames[val[0]] = val[1];
|
|
19293
|
+
if (val[0] == sidx)
|
|
19294
|
+
n = val[1];
|
|
19295
|
+
break;
|
|
19126
19296
|
default:
|
|
19127
19297
|
break;
|
|
19128
19298
|
}
|
|
19129
|
-
|
|
19299
|
+
}, o);
|
|
19300
|
+
} else
|
|
19301
|
+
throw new Error("Unrecognized LOTUS BOF " + d[2]);
|
|
19130
19302
|
s["!ref"] = encode_range(refguess);
|
|
19131
|
-
sheets[n] = s;
|
|
19132
|
-
|
|
19303
|
+
sheets[next_n || n] = s;
|
|
19304
|
+
snames.push(next_n || n);
|
|
19305
|
+
if (!realnames.length)
|
|
19306
|
+
return { SheetNames: snames, Sheets: sheets };
|
|
19307
|
+
var osheets = {}, rnames = [];
|
|
19308
|
+
for (var i2 = 0; i2 < realnames.length; ++i2)
|
|
19309
|
+
if (sheets[snames[i2]]) {
|
|
19310
|
+
rnames.push(realnames[i2] || snames[i2]);
|
|
19311
|
+
osheets[realnames[i2]] = sheets[realnames[i2]] || sheets[snames[i2]];
|
|
19312
|
+
} else {
|
|
19313
|
+
rnames.push(realnames[i2]);
|
|
19314
|
+
osheets[realnames[i2]] = { "!ref": "A1" };
|
|
19315
|
+
}
|
|
19316
|
+
return { SheetNames: rnames, Sheets: osheets };
|
|
19133
19317
|
}
|
|
19134
|
-
function
|
|
19318
|
+
function sheet_to_wk1(ws, opts) {
|
|
19319
|
+
var o = opts || {};
|
|
19320
|
+
if (+o.codepage >= 0)
|
|
19321
|
+
set_cp(+o.codepage);
|
|
19322
|
+
if (o.type == "string")
|
|
19323
|
+
throw new Error("Cannot write WK1 to JS string");
|
|
19324
|
+
var ba = buf_array();
|
|
19325
|
+
var range = safe_decode_range(ws["!ref"]);
|
|
19326
|
+
var dense = Array.isArray(ws);
|
|
19327
|
+
var cols = [];
|
|
19328
|
+
write_biff_rec(ba, 0, write_BOF_WK1(1030));
|
|
19329
|
+
write_biff_rec(ba, 6, write_RANGE(range));
|
|
19330
|
+
var max_R = Math.min(range.e.r, 8191);
|
|
19331
|
+
for (var R = range.s.r; R <= max_R; ++R) {
|
|
19332
|
+
var rr = encode_row(R);
|
|
19333
|
+
for (var C = range.s.c; C <= range.e.c; ++C) {
|
|
19334
|
+
if (R === range.s.r)
|
|
19335
|
+
cols[C] = encode_col(C);
|
|
19336
|
+
var ref = cols[C] + rr;
|
|
19337
|
+
var cell = dense ? (ws[R] || [])[C] : ws[ref];
|
|
19338
|
+
if (!cell || cell.t == "z")
|
|
19339
|
+
continue;
|
|
19340
|
+
if (cell.t == "n") {
|
|
19341
|
+
if ((cell.v | 0) == cell.v && cell.v >= -32768 && cell.v <= 32767)
|
|
19342
|
+
write_biff_rec(ba, 13, write_INTEGER(R, C, cell.v));
|
|
19343
|
+
else
|
|
19344
|
+
write_biff_rec(ba, 14, write_NUMBER(R, C, cell.v));
|
|
19345
|
+
} else {
|
|
19346
|
+
var str = format_cell(cell);
|
|
19347
|
+
write_biff_rec(ba, 15, write_LABEL(R, C, str.slice(0, 239)));
|
|
19348
|
+
}
|
|
19349
|
+
}
|
|
19350
|
+
}
|
|
19351
|
+
write_biff_rec(ba, 1);
|
|
19352
|
+
return ba.end();
|
|
19353
|
+
}
|
|
19354
|
+
function book_to_wk3(wb, opts) {
|
|
19355
|
+
var o = opts || {};
|
|
19356
|
+
if (+o.codepage >= 0)
|
|
19357
|
+
set_cp(+o.codepage);
|
|
19358
|
+
if (o.type == "string")
|
|
19359
|
+
throw new Error("Cannot write WK3 to JS string");
|
|
19360
|
+
var ba = buf_array();
|
|
19361
|
+
write_biff_rec(ba, 0, write_BOF_WK3(wb));
|
|
19362
|
+
for (var i2 = 0, cnt = 0; i2 < wb.SheetNames.length; ++i2)
|
|
19363
|
+
if ((wb.Sheets[wb.SheetNames[i2]] || {})["!ref"])
|
|
19364
|
+
write_biff_rec(ba, 27, write_XFORMAT_SHEETNAME(wb.SheetNames[i2], cnt++));
|
|
19365
|
+
var wsidx = 0;
|
|
19366
|
+
for (i2 = 0; i2 < wb.SheetNames.length; ++i2) {
|
|
19367
|
+
var ws = wb.Sheets[wb.SheetNames[i2]];
|
|
19368
|
+
if (!ws || !ws["!ref"])
|
|
19369
|
+
continue;
|
|
19370
|
+
var range = safe_decode_range(ws["!ref"]);
|
|
19371
|
+
var dense = Array.isArray(ws);
|
|
19372
|
+
var cols = [];
|
|
19373
|
+
var max_R = Math.min(range.e.r, 8191);
|
|
19374
|
+
for (var R = range.s.r; R <= max_R; ++R) {
|
|
19375
|
+
var rr = encode_row(R);
|
|
19376
|
+
for (var C = range.s.c; C <= range.e.c; ++C) {
|
|
19377
|
+
if (R === range.s.r)
|
|
19378
|
+
cols[C] = encode_col(C);
|
|
19379
|
+
var ref = cols[C] + rr;
|
|
19380
|
+
var cell = dense ? (ws[R] || [])[C] : ws[ref];
|
|
19381
|
+
if (!cell || cell.t == "z")
|
|
19382
|
+
continue;
|
|
19383
|
+
if (cell.t == "n") {
|
|
19384
|
+
write_biff_rec(ba, 23, write_NUMBER_17(R, C, wsidx, cell.v));
|
|
19385
|
+
} else {
|
|
19386
|
+
var str = format_cell(cell);
|
|
19387
|
+
write_biff_rec(ba, 22, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));
|
|
19388
|
+
}
|
|
19389
|
+
}
|
|
19390
|
+
}
|
|
19391
|
+
++wsidx;
|
|
19392
|
+
}
|
|
19393
|
+
write_biff_rec(ba, 1);
|
|
19394
|
+
return ba.end();
|
|
19395
|
+
}
|
|
19396
|
+
function write_BOF_WK1(v) {
|
|
19397
|
+
var out = new_buf(2);
|
|
19398
|
+
out.write_shift(2, v);
|
|
19399
|
+
return out;
|
|
19400
|
+
}
|
|
19401
|
+
function write_BOF_WK3(wb) {
|
|
19402
|
+
var out = new_buf(26);
|
|
19403
|
+
out.write_shift(2, 4096);
|
|
19404
|
+
out.write_shift(2, 4);
|
|
19405
|
+
out.write_shift(4, 0);
|
|
19406
|
+
var rows = 0, cols = 0, wscnt = 0;
|
|
19407
|
+
for (var i2 = 0; i2 < wb.SheetNames.length; ++i2) {
|
|
19408
|
+
var name = wb.SheetNames[i2];
|
|
19409
|
+
var ws = wb.Sheets[name];
|
|
19410
|
+
if (!ws || !ws["!ref"])
|
|
19411
|
+
continue;
|
|
19412
|
+
++wscnt;
|
|
19413
|
+
var range = decode_range(ws["!ref"]);
|
|
19414
|
+
if (rows < range.e.r)
|
|
19415
|
+
rows = range.e.r;
|
|
19416
|
+
if (cols < range.e.c)
|
|
19417
|
+
cols = range.e.c;
|
|
19418
|
+
}
|
|
19419
|
+
if (rows > 8191)
|
|
19420
|
+
rows = 8191;
|
|
19421
|
+
out.write_shift(2, rows);
|
|
19422
|
+
out.write_shift(1, wscnt);
|
|
19423
|
+
out.write_shift(1, cols);
|
|
19424
|
+
out.write_shift(2, 0);
|
|
19425
|
+
out.write_shift(2, 0);
|
|
19426
|
+
out.write_shift(1, 1);
|
|
19427
|
+
out.write_shift(1, 2);
|
|
19428
|
+
out.write_shift(4, 0);
|
|
19429
|
+
out.write_shift(4, 0);
|
|
19430
|
+
return out;
|
|
19431
|
+
}
|
|
19432
|
+
function parse_RANGE(blob, length, opts) {
|
|
19135
19433
|
var o = { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } };
|
|
19434
|
+
if (length == 8 && opts.qpro) {
|
|
19435
|
+
o.s.c = blob.read_shift(1);
|
|
19436
|
+
blob.l++;
|
|
19437
|
+
o.s.r = blob.read_shift(2);
|
|
19438
|
+
o.e.c = blob.read_shift(1);
|
|
19439
|
+
blob.l++;
|
|
19440
|
+
o.e.r = blob.read_shift(2);
|
|
19441
|
+
return o;
|
|
19442
|
+
}
|
|
19136
19443
|
o.s.c = blob.read_shift(2);
|
|
19137
19444
|
o.s.r = blob.read_shift(2);
|
|
19445
|
+
if (length == 12 && opts.qpro)
|
|
19446
|
+
blob.l += 2;
|
|
19138
19447
|
o.e.c = blob.read_shift(2);
|
|
19139
19448
|
o.e.r = blob.read_shift(2);
|
|
19449
|
+
if (length == 12 && opts.qpro)
|
|
19450
|
+
blob.l += 2;
|
|
19140
19451
|
if (o.s.c == 65535)
|
|
19141
19452
|
o.s.c = o.e.c = o.s.r = o.e.r = 0;
|
|
19142
19453
|
return o;
|
|
19143
19454
|
}
|
|
19455
|
+
function write_RANGE(range) {
|
|
19456
|
+
var out = new_buf(8);
|
|
19457
|
+
out.write_shift(2, range.s.c);
|
|
19458
|
+
out.write_shift(2, range.s.r);
|
|
19459
|
+
out.write_shift(2, range.e.c);
|
|
19460
|
+
out.write_shift(2, range.e.r);
|
|
19461
|
+
return out;
|
|
19462
|
+
}
|
|
19144
19463
|
function parse_cell(blob, length, opts) {
|
|
19145
|
-
var o = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0];
|
|
19464
|
+
var o = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0, 0];
|
|
19146
19465
|
if (opts.qpro && opts.vers != 20768) {
|
|
19147
19466
|
o[0].c = blob.read_shift(1);
|
|
19148
|
-
blob.
|
|
19467
|
+
o[3] = blob.read_shift(1);
|
|
19149
19468
|
o[0].r = blob.read_shift(2);
|
|
19150
19469
|
blob.l += 2;
|
|
19151
19470
|
} else {
|
|
@@ -19170,16 +19489,45 @@
|
|
|
19170
19489
|
o[1].v = blob.read_shift(tgt - blob.l, "cstr");
|
|
19171
19490
|
return o;
|
|
19172
19491
|
}
|
|
19492
|
+
function write_LABEL(R, C, s) {
|
|
19493
|
+
var o = new_buf(7 + s.length);
|
|
19494
|
+
o.write_shift(1, 255);
|
|
19495
|
+
o.write_shift(2, C);
|
|
19496
|
+
o.write_shift(2, R);
|
|
19497
|
+
o.write_shift(1, 39);
|
|
19498
|
+
for (var i2 = 0; i2 < o.length; ++i2) {
|
|
19499
|
+
var cc = s.charCodeAt(i2);
|
|
19500
|
+
o.write_shift(1, cc >= 128 ? 95 : cc);
|
|
19501
|
+
}
|
|
19502
|
+
o.write_shift(1, 0);
|
|
19503
|
+
return o;
|
|
19504
|
+
}
|
|
19173
19505
|
function parse_INTEGER(blob, length, opts) {
|
|
19174
19506
|
var o = parse_cell(blob, length, opts);
|
|
19175
19507
|
o[1].v = blob.read_shift(2, "i");
|
|
19176
19508
|
return o;
|
|
19177
19509
|
}
|
|
19510
|
+
function write_INTEGER(R, C, v) {
|
|
19511
|
+
var o = new_buf(7);
|
|
19512
|
+
o.write_shift(1, 255);
|
|
19513
|
+
o.write_shift(2, C);
|
|
19514
|
+
o.write_shift(2, R);
|
|
19515
|
+
o.write_shift(2, v, "i");
|
|
19516
|
+
return o;
|
|
19517
|
+
}
|
|
19178
19518
|
function parse_NUMBER(blob, length, opts) {
|
|
19179
19519
|
var o = parse_cell(blob, length, opts);
|
|
19180
19520
|
o[1].v = blob.read_shift(8, "f");
|
|
19181
19521
|
return o;
|
|
19182
19522
|
}
|
|
19523
|
+
function write_NUMBER(R, C, v) {
|
|
19524
|
+
var o = new_buf(13);
|
|
19525
|
+
o.write_shift(1, 255);
|
|
19526
|
+
o.write_shift(2, C);
|
|
19527
|
+
o.write_shift(2, R);
|
|
19528
|
+
o.write_shift(8, v, "f");
|
|
19529
|
+
return o;
|
|
19530
|
+
}
|
|
19183
19531
|
function parse_FORMULA(blob, length, opts) {
|
|
19184
19532
|
var tgt = blob.l + length;
|
|
19185
19533
|
var o = parse_cell(blob, length, opts);
|
|
@@ -19188,10 +19536,192 @@
|
|
|
19188
19536
|
blob.l = tgt;
|
|
19189
19537
|
else {
|
|
19190
19538
|
var flen = blob.read_shift(2);
|
|
19539
|
+
wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);
|
|
19191
19540
|
blob.l += flen;
|
|
19192
19541
|
}
|
|
19193
19542
|
return o;
|
|
19194
19543
|
}
|
|
19544
|
+
function wk1_parse_rc(B, V, col) {
|
|
19545
|
+
var rel = V & 32768;
|
|
19546
|
+
V &= ~32768;
|
|
19547
|
+
V = (rel ? B : 0) + (V >= 8192 ? V - 16384 : V);
|
|
19548
|
+
return (rel ? "" : "$") + (col ? encode_col(V) : encode_row(V));
|
|
19549
|
+
}
|
|
19550
|
+
var oprec = [
|
|
19551
|
+
8,
|
|
19552
|
+
8,
|
|
19553
|
+
8,
|
|
19554
|
+
8,
|
|
19555
|
+
8,
|
|
19556
|
+
8,
|
|
19557
|
+
8,
|
|
19558
|
+
8,
|
|
19559
|
+
6,
|
|
19560
|
+
4,
|
|
19561
|
+
4,
|
|
19562
|
+
5,
|
|
19563
|
+
5,
|
|
19564
|
+
7,
|
|
19565
|
+
3,
|
|
19566
|
+
3,
|
|
19567
|
+
3,
|
|
19568
|
+
3,
|
|
19569
|
+
3,
|
|
19570
|
+
3,
|
|
19571
|
+
1,
|
|
19572
|
+
1,
|
|
19573
|
+
2,
|
|
19574
|
+
6,
|
|
19575
|
+
8,
|
|
19576
|
+
8,
|
|
19577
|
+
8,
|
|
19578
|
+
8,
|
|
19579
|
+
8,
|
|
19580
|
+
8,
|
|
19581
|
+
8,
|
|
19582
|
+
8
|
|
19583
|
+
];
|
|
19584
|
+
var FuncTab = {
|
|
19585
|
+
51: ["FALSE", 0],
|
|
19586
|
+
52: ["TRUE", 0],
|
|
19587
|
+
70: ["LEN", 1],
|
|
19588
|
+
80: ["SUM", 69],
|
|
19589
|
+
81: ["AVERAGEA", 69],
|
|
19590
|
+
82: ["COUNTA", 69],
|
|
19591
|
+
83: ["MINA", 69],
|
|
19592
|
+
84: ["MAXA", 69],
|
|
19593
|
+
111: ["T", 1]
|
|
19594
|
+
};
|
|
19595
|
+
var BinOpTab = [
|
|
19596
|
+
"",
|
|
19597
|
+
"",
|
|
19598
|
+
"",
|
|
19599
|
+
"",
|
|
19600
|
+
"",
|
|
19601
|
+
"",
|
|
19602
|
+
"",
|
|
19603
|
+
"",
|
|
19604
|
+
"",
|
|
19605
|
+
"+",
|
|
19606
|
+
"-",
|
|
19607
|
+
"*",
|
|
19608
|
+
"/",
|
|
19609
|
+
"^",
|
|
19610
|
+
"=",
|
|
19611
|
+
"<>",
|
|
19612
|
+
"<=",
|
|
19613
|
+
">=",
|
|
19614
|
+
"<",
|
|
19615
|
+
">",
|
|
19616
|
+
"",
|
|
19617
|
+
"",
|
|
19618
|
+
"",
|
|
19619
|
+
"",
|
|
19620
|
+
"&",
|
|
19621
|
+
"",
|
|
19622
|
+
"",
|
|
19623
|
+
"",
|
|
19624
|
+
"",
|
|
19625
|
+
"",
|
|
19626
|
+
"",
|
|
19627
|
+
""
|
|
19628
|
+
];
|
|
19629
|
+
function wk1_fmla_to_csf(blob, o) {
|
|
19630
|
+
prep_blob(blob, 0);
|
|
19631
|
+
var out = [], argc = 0, R = "", C = "", argL = "", argR = "";
|
|
19632
|
+
while (blob.l < blob.length) {
|
|
19633
|
+
var cc = blob[blob.l++];
|
|
19634
|
+
switch (cc) {
|
|
19635
|
+
case 0:
|
|
19636
|
+
out.push(blob.read_shift(8, "f"));
|
|
19637
|
+
break;
|
|
19638
|
+
case 1:
|
|
19639
|
+
{
|
|
19640
|
+
C = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
|
|
19641
|
+
R = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
|
|
19642
|
+
out.push(C + R);
|
|
19643
|
+
}
|
|
19644
|
+
break;
|
|
19645
|
+
case 2:
|
|
19646
|
+
{
|
|
19647
|
+
var c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
|
|
19648
|
+
var r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
|
|
19649
|
+
C = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
|
|
19650
|
+
R = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
|
|
19651
|
+
out.push(c + r + ":" + C + R);
|
|
19652
|
+
}
|
|
19653
|
+
break;
|
|
19654
|
+
case 3:
|
|
19655
|
+
if (blob.l < blob.length) {
|
|
19656
|
+
console.error("WK1 premature formula end");
|
|
19657
|
+
return;
|
|
19658
|
+
}
|
|
19659
|
+
break;
|
|
19660
|
+
case 4:
|
|
19661
|
+
out.push("(" + out.pop() + ")");
|
|
19662
|
+
break;
|
|
19663
|
+
case 5:
|
|
19664
|
+
out.push(blob.read_shift(2));
|
|
19665
|
+
break;
|
|
19666
|
+
case 6:
|
|
19667
|
+
{
|
|
19668
|
+
var Z = "";
|
|
19669
|
+
while (cc = blob[blob.l++])
|
|
19670
|
+
Z += String.fromCharCode(cc);
|
|
19671
|
+
out.push('"' + Z.replace(/"/g, '""') + '"');
|
|
19672
|
+
break;
|
|
19673
|
+
}
|
|
19674
|
+
break;
|
|
19675
|
+
case 8:
|
|
19676
|
+
out.push("-" + out.pop());
|
|
19677
|
+
break;
|
|
19678
|
+
case 23:
|
|
19679
|
+
out.push("+" + out.pop());
|
|
19680
|
+
break;
|
|
19681
|
+
case 22:
|
|
19682
|
+
out.push("NOT(" + out.pop() + ")");
|
|
19683
|
+
break;
|
|
19684
|
+
case 20:
|
|
19685
|
+
case 21:
|
|
19686
|
+
{
|
|
19687
|
+
argR = out.pop();
|
|
19688
|
+
argL = out.pop();
|
|
19689
|
+
out.push(["AND", "OR"][cc - 20] + "(" + argL + "," + argR + ")");
|
|
19690
|
+
}
|
|
19691
|
+
break;
|
|
19692
|
+
default:
|
|
19693
|
+
if (cc < 32 && BinOpTab[cc]) {
|
|
19694
|
+
argR = out.pop();
|
|
19695
|
+
argL = out.pop();
|
|
19696
|
+
out.push(argL + BinOpTab[cc] + argR);
|
|
19697
|
+
} else if (FuncTab[cc]) {
|
|
19698
|
+
argc = FuncTab[cc][1];
|
|
19699
|
+
if (argc == 69)
|
|
19700
|
+
argc = blob[blob.l++];
|
|
19701
|
+
if (argc > out.length) {
|
|
19702
|
+
console.error("WK1 bad formula parse 0x" + cc.toString(16) + ":|" + out.join("|") + "|");
|
|
19703
|
+
return;
|
|
19704
|
+
}
|
|
19705
|
+
var args = out.slice(-argc);
|
|
19706
|
+
out.length -= argc;
|
|
19707
|
+
out.push(FuncTab[cc][0] + "(" + args.join(",") + ")");
|
|
19708
|
+
} else if (cc <= 7)
|
|
19709
|
+
return console.error("WK1 invalid opcode " + cc.toString(16));
|
|
19710
|
+
else if (cc <= 24)
|
|
19711
|
+
return console.error("WK1 unsupported op " + cc.toString(16));
|
|
19712
|
+
else if (cc <= 30)
|
|
19713
|
+
return console.error("WK1 invalid opcode " + cc.toString(16));
|
|
19714
|
+
else if (cc <= 115)
|
|
19715
|
+
return console.error("WK1 unsupported function opcode " + cc.toString(16));
|
|
19716
|
+
else
|
|
19717
|
+
return console.error("WK1 unrecognized opcode " + cc.toString(16));
|
|
19718
|
+
}
|
|
19719
|
+
}
|
|
19720
|
+
if (out.length == 1)
|
|
19721
|
+
o[1].f = "" + out[0];
|
|
19722
|
+
else
|
|
19723
|
+
console.error("WK1 bad formula parse |" + out.join("|") + "|");
|
|
19724
|
+
}
|
|
19195
19725
|
function parse_cell_3(blob) {
|
|
19196
19726
|
var o = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0];
|
|
19197
19727
|
o[0].r = blob.read_shift(2);
|
|
@@ -19205,29 +19735,49 @@
|
|
|
19205
19735
|
o[1].v = blob.read_shift(length - 4, "cstr");
|
|
19206
19736
|
return o;
|
|
19207
19737
|
}
|
|
19738
|
+
function write_LABEL_16(R, C, wsidx, s) {
|
|
19739
|
+
var o = new_buf(6 + s.length);
|
|
19740
|
+
o.write_shift(2, R);
|
|
19741
|
+
o.write_shift(1, wsidx);
|
|
19742
|
+
o.write_shift(1, C);
|
|
19743
|
+
o.write_shift(1, 39);
|
|
19744
|
+
for (var i2 = 0; i2 < s.length; ++i2) {
|
|
19745
|
+
var cc = s.charCodeAt(i2);
|
|
19746
|
+
o.write_shift(1, cc >= 128 ? 95 : cc);
|
|
19747
|
+
}
|
|
19748
|
+
o.write_shift(1, 0);
|
|
19749
|
+
return o;
|
|
19750
|
+
}
|
|
19208
19751
|
function parse_NUMBER_18(blob, length) {
|
|
19209
19752
|
var o = parse_cell_3(blob, length);
|
|
19210
19753
|
o[1].v = blob.read_shift(2);
|
|
19211
19754
|
var v = o[1].v >> 1;
|
|
19212
19755
|
if (o[1].v & 1) {
|
|
19213
19756
|
switch (v & 7) {
|
|
19757
|
+
case 0:
|
|
19758
|
+
v = (v >> 3) * 5e3;
|
|
19759
|
+
break;
|
|
19214
19760
|
case 1:
|
|
19215
19761
|
v = (v >> 3) * 500;
|
|
19216
19762
|
break;
|
|
19217
19763
|
case 2:
|
|
19218
19764
|
v = (v >> 3) / 20;
|
|
19219
19765
|
break;
|
|
19766
|
+
case 3:
|
|
19767
|
+
v = (v >> 3) / 200;
|
|
19768
|
+
break;
|
|
19220
19769
|
case 4:
|
|
19221
19770
|
v = (v >> 3) / 2e3;
|
|
19222
19771
|
break;
|
|
19772
|
+
case 5:
|
|
19773
|
+
v = (v >> 3) / 2e4;
|
|
19774
|
+
break;
|
|
19223
19775
|
case 6:
|
|
19224
19776
|
v = (v >> 3) / 16;
|
|
19225
19777
|
break;
|
|
19226
19778
|
case 7:
|
|
19227
19779
|
v = (v >> 3) / 64;
|
|
19228
19780
|
break;
|
|
19229
|
-
default:
|
|
19230
|
-
throw "unknown NUMBER_18 encoding " + (v & 7);
|
|
19231
19781
|
}
|
|
19232
19782
|
}
|
|
19233
19783
|
o[1].v = v;
|
|
@@ -19239,12 +19789,54 @@
|
|
|
19239
19789
|
var v2 = blob.read_shift(4);
|
|
19240
19790
|
var e = blob.read_shift(2);
|
|
19241
19791
|
if (e == 65535) {
|
|
19242
|
-
|
|
19792
|
+
if (v1 === 0 && v2 === 3221225472) {
|
|
19793
|
+
o[1].t = "e";
|
|
19794
|
+
o[1].v = 15;
|
|
19795
|
+
} else if (v1 === 0 && v2 === 3489660928) {
|
|
19796
|
+
o[1].t = "e";
|
|
19797
|
+
o[1].v = 42;
|
|
19798
|
+
} else
|
|
19799
|
+
o[1].v = 0;
|
|
19243
19800
|
return o;
|
|
19244
19801
|
}
|
|
19245
19802
|
var s = e & 32768;
|
|
19246
19803
|
e = (e & 32767) - 16446;
|
|
19247
|
-
o[1].v = (s * 2
|
|
19804
|
+
o[1].v = (1 - s * 2) * (v2 * Math.pow(2, e + 32) + v1 * Math.pow(2, e));
|
|
19805
|
+
return o;
|
|
19806
|
+
}
|
|
19807
|
+
function write_NUMBER_17(R, C, wsidx, v) {
|
|
19808
|
+
var o = new_buf(14);
|
|
19809
|
+
o.write_shift(2, R);
|
|
19810
|
+
o.write_shift(1, wsidx);
|
|
19811
|
+
o.write_shift(1, C);
|
|
19812
|
+
if (v == 0) {
|
|
19813
|
+
o.write_shift(4, 0);
|
|
19814
|
+
o.write_shift(4, 0);
|
|
19815
|
+
o.write_shift(2, 65535);
|
|
19816
|
+
return o;
|
|
19817
|
+
}
|
|
19818
|
+
var s = 0, e = 0, v1 = 0, v2 = 0;
|
|
19819
|
+
if (v < 0) {
|
|
19820
|
+
s = 1;
|
|
19821
|
+
v = -v;
|
|
19822
|
+
}
|
|
19823
|
+
e = Math.log2(v) | 0;
|
|
19824
|
+
v /= Math.pow(2, e - 31);
|
|
19825
|
+
v2 = v >>> 0;
|
|
19826
|
+
if ((v2 & 2147483648) == 0) {
|
|
19827
|
+
v /= 2;
|
|
19828
|
+
++e;
|
|
19829
|
+
v2 = v >>> 0;
|
|
19830
|
+
}
|
|
19831
|
+
v -= v2;
|
|
19832
|
+
v2 |= 2147483648;
|
|
19833
|
+
v2 >>>= 0;
|
|
19834
|
+
v *= Math.pow(2, 32);
|
|
19835
|
+
v1 = v >>> 0;
|
|
19836
|
+
o.write_shift(4, v1);
|
|
19837
|
+
o.write_shift(4, v2);
|
|
19838
|
+
e += 16383 + (s ? 32768 : 0);
|
|
19839
|
+
o.write_shift(2, e);
|
|
19248
19840
|
return o;
|
|
19249
19841
|
}
|
|
19250
19842
|
function parse_FORMULA_19(blob, length) {
|
|
@@ -19269,6 +19861,55 @@
|
|
|
19269
19861
|
blob.l += length - 10;
|
|
19270
19862
|
return o;
|
|
19271
19863
|
}
|
|
19864
|
+
function parse_SHEETNAMECS(blob, length) {
|
|
19865
|
+
return blob[blob.l + length - 1] == 0 ? blob.read_shift(length, "cstr") : "";
|
|
19866
|
+
}
|
|
19867
|
+
function parse_SHEETNAMELP(blob, length) {
|
|
19868
|
+
var len = blob[blob.l++];
|
|
19869
|
+
if (len > length - 1)
|
|
19870
|
+
len = length - 1;
|
|
19871
|
+
var o = "";
|
|
19872
|
+
while (o.length < len)
|
|
19873
|
+
o += String.fromCharCode(blob[blob.l++]);
|
|
19874
|
+
return o;
|
|
19875
|
+
}
|
|
19876
|
+
function parse_SHEETINFOQP(blob, length, opts) {
|
|
19877
|
+
if (!opts.qpro || length < 21)
|
|
19878
|
+
return;
|
|
19879
|
+
var id = blob.read_shift(1);
|
|
19880
|
+
blob.l += 17;
|
|
19881
|
+
var len = blob.read_shift(1);
|
|
19882
|
+
blob.l += 2;
|
|
19883
|
+
var nm = blob.read_shift(length - 21, "cstr");
|
|
19884
|
+
return [id, nm];
|
|
19885
|
+
}
|
|
19886
|
+
function parse_XFORMAT(blob, length) {
|
|
19887
|
+
var o = {}, tgt = blob.l + length;
|
|
19888
|
+
while (blob.l < tgt) {
|
|
19889
|
+
var dt = blob.read_shift(2);
|
|
19890
|
+
if (dt == 14e3) {
|
|
19891
|
+
o[dt] = [0, ""];
|
|
19892
|
+
o[dt][0] = blob.read_shift(2);
|
|
19893
|
+
while (blob[blob.l]) {
|
|
19894
|
+
o[dt][1] += String.fromCharCode(blob[blob.l]);
|
|
19895
|
+
blob.l++;
|
|
19896
|
+
}
|
|
19897
|
+
blob.l++;
|
|
19898
|
+
}
|
|
19899
|
+
}
|
|
19900
|
+
return o;
|
|
19901
|
+
}
|
|
19902
|
+
function write_XFORMAT_SHEETNAME(name, wsidx) {
|
|
19903
|
+
var out = new_buf(5 + name.length);
|
|
19904
|
+
out.write_shift(2, 14e3);
|
|
19905
|
+
out.write_shift(2, wsidx);
|
|
19906
|
+
for (var i2 = 0; i2 < name.length; ++i2) {
|
|
19907
|
+
var cc = name.charCodeAt(i2);
|
|
19908
|
+
out[out.l++] = cc > 127 ? 95 : cc;
|
|
19909
|
+
}
|
|
19910
|
+
out[out.l++] = 0;
|
|
19911
|
+
return out;
|
|
19912
|
+
}
|
|
19272
19913
|
var WK1Enum = {
|
|
19273
19914
|
0: { n: "BOF", f: parseuint16 },
|
|
19274
19915
|
1: { n: "EOF" },
|
|
@@ -19327,44 +19968,142 @@
|
|
|
19327
19968
|
72: { n: "ACOMM" },
|
|
19328
19969
|
73: { n: "AMACRO" },
|
|
19329
19970
|
74: { n: "PARSE" },
|
|
19330
|
-
|
|
19971
|
+
102: { n: "PRANGES??" },
|
|
19972
|
+
103: { n: "RRANGES??" },
|
|
19973
|
+
104: { n: "FNAME??" },
|
|
19974
|
+
105: { n: "MRANGES??" },
|
|
19975
|
+
204: { n: "SHEETNAMECS", f: parse_SHEETNAMECS },
|
|
19976
|
+
222: { n: "SHEETNAMELP", f: parse_SHEETNAMELP },
|
|
19977
|
+
65535: { n: "" }
|
|
19331
19978
|
};
|
|
19332
19979
|
var WK3Enum = {
|
|
19333
19980
|
0: { n: "BOF" },
|
|
19334
19981
|
1: { n: "EOF" },
|
|
19335
|
-
|
|
19336
|
-
|
|
19337
|
-
|
|
19338
|
-
|
|
19339
|
-
|
|
19340
|
-
|
|
19341
|
-
|
|
19342
|
-
|
|
19343
|
-
|
|
19344
|
-
|
|
19345
|
-
|
|
19346
|
-
|
|
19347
|
-
|
|
19348
|
-
|
|
19982
|
+
2: { n: "PASSWORD" },
|
|
19983
|
+
3: { n: "CALCSET" },
|
|
19984
|
+
4: { n: "WINDOWSET" },
|
|
19985
|
+
5: { n: "SHEETCELLPTR" },
|
|
19986
|
+
6: { n: "SHEETLAYOUT" },
|
|
19987
|
+
7: { n: "COLUMNWIDTH" },
|
|
19988
|
+
8: { n: "HIDDENCOLUMN" },
|
|
19989
|
+
9: { n: "USERRANGE" },
|
|
19990
|
+
10: { n: "SYSTEMRANGE" },
|
|
19991
|
+
11: { n: "ZEROFORCE" },
|
|
19992
|
+
12: { n: "SORTKEYDIR" },
|
|
19993
|
+
13: { n: "FILESEAL" },
|
|
19994
|
+
14: { n: "DATAFILLNUMS" },
|
|
19995
|
+
15: { n: "PRINTMAIN" },
|
|
19996
|
+
16: { n: "PRINTSTRING" },
|
|
19997
|
+
17: { n: "GRAPHMAIN" },
|
|
19998
|
+
18: { n: "GRAPHSTRING" },
|
|
19349
19999
|
19: { n: "??" },
|
|
19350
|
-
|
|
20000
|
+
20: { n: "ERRCELL" },
|
|
20001
|
+
21: { n: "NACELL" },
|
|
19351
20002
|
22: { n: "LABEL16", f: parse_LABEL_16 },
|
|
19352
20003
|
23: { n: "NUMBER17", f: parse_NUMBER_17 },
|
|
19353
20004
|
24: { n: "NUMBER18", f: parse_NUMBER_18 },
|
|
19354
20005
|
25: { n: "FORMULA19", f: parse_FORMULA_19 },
|
|
19355
|
-
26: { n: "
|
|
19356
|
-
27: { n: "
|
|
19357
|
-
28: { n: "
|
|
19358
|
-
29: { n: "
|
|
19359
|
-
30: { n: "
|
|
19360
|
-
31: { n: "
|
|
19361
|
-
|
|
20006
|
+
26: { n: "FORMULA1A" },
|
|
20007
|
+
27: { n: "XFORMAT", f: parse_XFORMAT },
|
|
20008
|
+
28: { n: "DTLABELMISC" },
|
|
20009
|
+
29: { n: "DTLABELCELL" },
|
|
20010
|
+
30: { n: "GRAPHWINDOW" },
|
|
20011
|
+
31: { n: "CPA" },
|
|
20012
|
+
32: { n: "LPLAUTO" },
|
|
20013
|
+
33: { n: "QUERY" },
|
|
20014
|
+
34: { n: "HIDDENSHEET" },
|
|
20015
|
+
35: { n: "??" },
|
|
19362
20016
|
37: { n: "NUMBER25", f: parse_NUMBER_25 },
|
|
20017
|
+
38: { n: "??" },
|
|
19363
20018
|
39: { n: "NUMBER27", f: parse_NUMBER_27 },
|
|
19364
20019
|
40: { n: "FORMULA28", f: parse_FORMULA_28 },
|
|
19365
|
-
|
|
20020
|
+
142: { n: "??" },
|
|
20021
|
+
147: { n: "??" },
|
|
20022
|
+
150: { n: "??" },
|
|
20023
|
+
151: { n: "??" },
|
|
20024
|
+
152: { n: "??" },
|
|
20025
|
+
153: { n: "??" },
|
|
20026
|
+
154: { n: "??" },
|
|
20027
|
+
155: { n: "??" },
|
|
20028
|
+
156: { n: "??" },
|
|
20029
|
+
163: { n: "??" },
|
|
20030
|
+
174: { n: "??" },
|
|
20031
|
+
175: { n: "??" },
|
|
20032
|
+
176: { n: "??" },
|
|
20033
|
+
177: { n: "??" },
|
|
20034
|
+
184: { n: "??" },
|
|
20035
|
+
185: { n: "??" },
|
|
20036
|
+
186: { n: "??" },
|
|
20037
|
+
187: { n: "??" },
|
|
20038
|
+
188: { n: "??" },
|
|
20039
|
+
195: { n: "??" },
|
|
20040
|
+
201: { n: "??" },
|
|
20041
|
+
204: { n: "SHEETNAMECS", f: parse_SHEETNAMECS },
|
|
20042
|
+
205: { n: "??" },
|
|
20043
|
+
206: { n: "??" },
|
|
20044
|
+
207: { n: "??" },
|
|
20045
|
+
208: { n: "??" },
|
|
20046
|
+
256: { n: "??" },
|
|
20047
|
+
259: { n: "??" },
|
|
20048
|
+
260: { n: "??" },
|
|
20049
|
+
261: { n: "??" },
|
|
20050
|
+
262: { n: "??" },
|
|
20051
|
+
263: { n: "??" },
|
|
20052
|
+
265: { n: "??" },
|
|
20053
|
+
266: { n: "??" },
|
|
20054
|
+
267: { n: "??" },
|
|
20055
|
+
268: { n: "??" },
|
|
20056
|
+
270: { n: "??" },
|
|
20057
|
+
271: { n: "??" },
|
|
20058
|
+
384: { n: "??" },
|
|
20059
|
+
389: { n: "??" },
|
|
20060
|
+
390: { n: "??" },
|
|
20061
|
+
393: { n: "??" },
|
|
20062
|
+
396: { n: "??" },
|
|
20063
|
+
512: { n: "??" },
|
|
20064
|
+
514: { n: "??" },
|
|
20065
|
+
513: { n: "??" },
|
|
20066
|
+
516: { n: "??" },
|
|
20067
|
+
517: { n: "??" },
|
|
20068
|
+
640: { n: "??" },
|
|
20069
|
+
641: { n: "??" },
|
|
20070
|
+
642: { n: "??" },
|
|
20071
|
+
643: { n: "??" },
|
|
20072
|
+
644: { n: "??" },
|
|
20073
|
+
645: { n: "??" },
|
|
20074
|
+
646: { n: "??" },
|
|
20075
|
+
647: { n: "??" },
|
|
20076
|
+
648: { n: "??" },
|
|
20077
|
+
658: { n: "??" },
|
|
20078
|
+
659: { n: "??" },
|
|
20079
|
+
660: { n: "??" },
|
|
20080
|
+
661: { n: "??" },
|
|
20081
|
+
662: { n: "??" },
|
|
20082
|
+
665: { n: "??" },
|
|
20083
|
+
666: { n: "??" },
|
|
20084
|
+
768: { n: "??" },
|
|
20085
|
+
772: { n: "??" },
|
|
20086
|
+
1537: { n: "SHEETINFOQP", f: parse_SHEETINFOQP },
|
|
20087
|
+
1600: { n: "??" },
|
|
20088
|
+
1602: { n: "??" },
|
|
20089
|
+
1793: { n: "??" },
|
|
20090
|
+
1794: { n: "??" },
|
|
20091
|
+
1795: { n: "??" },
|
|
20092
|
+
1796: { n: "??" },
|
|
20093
|
+
1920: { n: "??" },
|
|
20094
|
+
2048: { n: "??" },
|
|
20095
|
+
2049: { n: "??" },
|
|
20096
|
+
2052: { n: "??" },
|
|
20097
|
+
2688: { n: "??" },
|
|
20098
|
+
10998: { n: "??" },
|
|
20099
|
+
12849: { n: "??" },
|
|
20100
|
+
28233: { n: "??" },
|
|
20101
|
+
28484: { n: "??" },
|
|
20102
|
+
65535: { n: "" }
|
|
19366
20103
|
};
|
|
19367
20104
|
return {
|
|
20105
|
+
sheet_to_wk1,
|
|
20106
|
+
book_to_wk3,
|
|
19368
20107
|
to_workbook: lotus_to_workbook
|
|
19369
20108
|
};
|
|
19370
20109
|
}();
|
|
@@ -20029,7 +20768,7 @@
|
|
|
20029
20768
|
case "binary":
|
|
20030
20769
|
return rtf_to_sheet_str(d, opts);
|
|
20031
20770
|
case "buffer":
|
|
20032
|
-
return rtf_to_sheet_str(d.toString("binary"), opts);
|
|
20771
|
+
return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d), opts);
|
|
20033
20772
|
case "array":
|
|
20034
20773
|
return rtf_to_sheet_str(cc2str(d), opts);
|
|
20035
20774
|
}
|
|
@@ -20038,9 +20777,38 @@
|
|
|
20038
20777
|
function rtf_to_sheet_str(str, opts) {
|
|
20039
20778
|
var o = opts || {};
|
|
20040
20779
|
var ws = o.dense ? [] : {};
|
|
20041
|
-
var
|
|
20042
|
-
if (!
|
|
20780
|
+
var rows = str.match(/\\trowd.*?\\row\b/g);
|
|
20781
|
+
if (!rows.length)
|
|
20043
20782
|
throw new Error("RTF missing table");
|
|
20783
|
+
var range = { s: { c: 0, r: 0 }, e: { c: 0, r: rows.length - 1 } };
|
|
20784
|
+
rows.forEach(function(rowtf, R) {
|
|
20785
|
+
if (Array.isArray(ws))
|
|
20786
|
+
ws[R] = [];
|
|
20787
|
+
var rtfre = /\\\w+\b/g;
|
|
20788
|
+
var last_index = 0;
|
|
20789
|
+
var res;
|
|
20790
|
+
var C = -1;
|
|
20791
|
+
while (res = rtfre.exec(rowtf)) {
|
|
20792
|
+
switch (res[0]) {
|
|
20793
|
+
case "\\cell":
|
|
20794
|
+
var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);
|
|
20795
|
+
if (data[0] == " ")
|
|
20796
|
+
data = data.slice(1);
|
|
20797
|
+
++C;
|
|
20798
|
+
if (data.length) {
|
|
20799
|
+
var cell = { v: data, t: "s" };
|
|
20800
|
+
if (Array.isArray(ws))
|
|
20801
|
+
ws[R][C] = cell;
|
|
20802
|
+
else
|
|
20803
|
+
ws[encode_cell({ r: R, c: C })] = cell;
|
|
20804
|
+
}
|
|
20805
|
+
break;
|
|
20806
|
+
}
|
|
20807
|
+
last_index = rtfre.lastIndex;
|
|
20808
|
+
}
|
|
20809
|
+
if (C > range.e.c)
|
|
20810
|
+
range.e.c = C;
|
|
20811
|
+
});
|
|
20044
20812
|
ws["!ref"] = encode_range(range);
|
|
20045
20813
|
return ws;
|
|
20046
20814
|
}
|
|
@@ -20552,7 +21320,7 @@
|
|
|
20552
21320
|
if (font.color.index == 81)
|
|
20553
21321
|
icv = XLSIcv[1];
|
|
20554
21322
|
if (!icv)
|
|
20555
|
-
|
|
21323
|
+
icv = XLSIcv[1];
|
|
20556
21324
|
font.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);
|
|
20557
21325
|
} else if (y.theme) {
|
|
20558
21326
|
font.color.theme = parseInt(y.theme, 10);
|
|
@@ -20666,7 +21434,7 @@
|
|
|
20666
21434
|
for (i2 = 0; i2 < cellXF_bool.length; ++i2)
|
|
20667
21435
|
if (xf[cellXF_bool[i2]])
|
|
20668
21436
|
xf[cellXF_bool[i2]] = parsexmlbool(xf[cellXF_bool[i2]]);
|
|
20669
|
-
if (xf.numFmtId > 392) {
|
|
21437
|
+
if (styles.NumberFmt && xf.numFmtId > 392) {
|
|
20670
21438
|
for (i2 = 392; i2 > 60; --i2)
|
|
20671
21439
|
if (styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i2]) {
|
|
20672
21440
|
xf.numFmtId = i2;
|
|
@@ -21429,7 +22197,7 @@
|
|
|
21429
22197
|
var dwThemeVersion = blob.read_shift(4);
|
|
21430
22198
|
if (dwThemeVersion === 124226)
|
|
21431
22199
|
return;
|
|
21432
|
-
if (!opts.cellStyles
|
|
22200
|
+
if (!opts.cellStyles) {
|
|
21433
22201
|
blob.l = end;
|
|
21434
22202
|
return;
|
|
21435
22203
|
}
|
|
@@ -21437,7 +22205,7 @@
|
|
|
21437
22205
|
blob.l = end;
|
|
21438
22206
|
var zip;
|
|
21439
22207
|
try {
|
|
21440
|
-
zip =
|
|
22208
|
+
zip = zip_read(data, { type: "array" });
|
|
21441
22209
|
} catch (e) {
|
|
21442
22210
|
return;
|
|
21443
22211
|
}
|
|
@@ -21778,7 +22546,7 @@
|
|
|
21778
22546
|
comment.r = rt.r;
|
|
21779
22547
|
if (rt.r == "<t></t>")
|
|
21780
22548
|
rt.t = rt.h = "";
|
|
21781
|
-
comment.t = rt.t.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
22549
|
+
comment.t = (rt.t || "").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
21782
22550
|
if (opts.cellHTML)
|
|
21783
22551
|
comment.h = rt.h;
|
|
21784
22552
|
commentList.push(comment);
|
|
@@ -22755,7 +23523,8 @@
|
|
|
22755
23523
|
}
|
|
22756
23524
|
}
|
|
22757
23525
|
function get_ixti(supbooks, ixti, opts) {
|
|
22758
|
-
|
|
23526
|
+
var ixtiraw = get_ixti_raw(supbooks, ixti, opts);
|
|
23527
|
+
return ixtiraw == "#REF" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);
|
|
22759
23528
|
}
|
|
22760
23529
|
function stringify_formula(formula, range, cell, supbooks, opts) {
|
|
22761
23530
|
var biff = opts && opts.biff || 8;
|
|
@@ -22924,7 +23693,7 @@
|
|
|
22924
23693
|
else if (supbooks[0] && supbooks[0][nameidx])
|
|
22925
23694
|
o += supbooks[0][nameidx].Name;
|
|
22926
23695
|
else {
|
|
22927
|
-
var ixtidata = get_ixti_raw(supbooks, bookidx, opts).split(";;");
|
|
23696
|
+
var ixtidata = (get_ixti_raw(supbooks, bookidx, opts) || "").split(";;");
|
|
22928
23697
|
if (ixtidata[nameidx - 1])
|
|
22929
23698
|
o = ixtidata[nameidx - 1];
|
|
22930
23699
|
else
|
|
@@ -24537,6 +25306,9 @@
|
|
|
24537
25306
|
p.width = col.width;
|
|
24538
25307
|
if (col.hidden)
|
|
24539
25308
|
p.hidden = true;
|
|
25309
|
+
if (col.level != null) {
|
|
25310
|
+
p.outlineLevel = p.level = col.level;
|
|
25311
|
+
}
|
|
24540
25312
|
return p;
|
|
24541
25313
|
}
|
|
24542
25314
|
function default_margins(margins, mode) {
|
|
@@ -24591,11 +25363,11 @@
|
|
|
24591
25363
|
if (opts.WTF)
|
|
24592
25364
|
throw e;
|
|
24593
25365
|
}
|
|
24594
|
-
if (p.t === "z")
|
|
25366
|
+
if (p.t === "z" && !opts.cellStyles)
|
|
24595
25367
|
return;
|
|
24596
25368
|
if (p.t === "d" && typeof p.v === "string")
|
|
24597
25369
|
p.v = parseDate(p.v);
|
|
24598
|
-
if (!opts || opts.cellText !== false)
|
|
25370
|
+
if ((!opts || opts.cellText !== false) && p.t !== "z")
|
|
24599
25371
|
try {
|
|
24600
25372
|
if (SSF._table[fmtid] == null)
|
|
24601
25373
|
SSF.load(SSFImplicit[fmtid] || "General", fmtid);
|
|
@@ -24665,6 +25437,7 @@
|
|
|
24665
25437
|
var afregex = /<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g;
|
|
24666
25438
|
var marginregex = /<(?:\w:)?pageMargins[^>]*\/>/g;
|
|
24667
25439
|
var sheetprregex = /<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/;
|
|
25440
|
+
var sheetprregex2 = /<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/;
|
|
24668
25441
|
var svsregex = /<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;
|
|
24669
25442
|
function parse_ws_xml(data, opts, idx, rels, wb, themes, styles) {
|
|
24670
25443
|
if (!data)
|
|
@@ -24685,6 +25458,8 @@
|
|
|
24685
25458
|
var sheetPr = data1.match(sheetprregex);
|
|
24686
25459
|
if (sheetPr)
|
|
24687
25460
|
parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);
|
|
25461
|
+
else if (sheetPr = data1.match(sheetprregex2))
|
|
25462
|
+
parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1] || "", s, wb, idx, styles, themes);
|
|
24688
25463
|
var ridx = (data1.match(/<(?:\w*:)?dimension/) || { index: -1 }).index;
|
|
24689
25464
|
if (ridx > 0) {
|
|
24690
25465
|
var ref = data1.slice(ridx, ridx + 50).match(dimregex);
|
|
@@ -24755,6 +25530,9 @@
|
|
|
24755
25530
|
if (data.codeName)
|
|
24756
25531
|
wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));
|
|
24757
25532
|
}
|
|
25533
|
+
function parse_ws_xml_sheetpr2(sheetPr, body, s, wb, idx, styles, themes) {
|
|
25534
|
+
parse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(">")), s, wb, idx);
|
|
25535
|
+
}
|
|
24758
25536
|
function write_ws_xml_sheetpr(ws, wb, idx, opts, o) {
|
|
24759
25537
|
var needed = false;
|
|
24760
25538
|
var props = {}, payload = null;
|
|
@@ -24818,9 +25596,9 @@
|
|
|
24818
25596
|
if (rel) {
|
|
24819
25597
|
val.Target = rel.Target;
|
|
24820
25598
|
if (val.location)
|
|
24821
|
-
val.Target += "#" + val.location;
|
|
25599
|
+
val.Target += "#" + unescapexml(val.location);
|
|
24822
25600
|
} else {
|
|
24823
|
-
val.Target = "#" + val.location;
|
|
25601
|
+
val.Target = "#" + unescapexml(val.location);
|
|
24824
25602
|
rel = { Target: val.Target, TargetMode: "Internal" };
|
|
24825
25603
|
}
|
|
24826
25604
|
val.Rel = rel;
|
|
@@ -24865,6 +25643,8 @@
|
|
|
24865
25643
|
if (coll.hidden)
|
|
24866
25644
|
coll.hidden = parsexmlbool(coll.hidden);
|
|
24867
25645
|
var colm = parseInt(coll.min, 10) - 1, colM = parseInt(coll.max, 10) - 1;
|
|
25646
|
+
if (coll.outlineLevel)
|
|
25647
|
+
coll.level = +coll.outlineLevel || 0;
|
|
24868
25648
|
delete coll.min;
|
|
24869
25649
|
delete coll.max;
|
|
24870
25650
|
coll.width = +coll.width;
|
|
@@ -24990,6 +25770,8 @@
|
|
|
24990
25770
|
delete cell.t;
|
|
24991
25771
|
break;
|
|
24992
25772
|
}
|
|
25773
|
+
if (cell.v.length > 32767)
|
|
25774
|
+
throw new Error("Text length must not exceed 32767 characters");
|
|
24993
25775
|
if (opts && opts.bookSST) {
|
|
24994
25776
|
v = writetag("v", "" + get_sst_id(opts.Strings, cell.v, opts.revStrings));
|
|
24995
25777
|
o.t = "s";
|
|
@@ -25033,11 +25815,47 @@
|
|
|
25033
25815
|
var xlen = x.length;
|
|
25034
25816
|
if (xlen === 0)
|
|
25035
25817
|
continue;
|
|
25036
|
-
|
|
25037
|
-
|
|
25038
|
-
|
|
25039
|
-
|
|
25040
|
-
|
|
25818
|
+
var rstarti = 0;
|
|
25819
|
+
outa:
|
|
25820
|
+
for (ri = 0; ri < xlen; ++ri)
|
|
25821
|
+
switch (x[ri]) {
|
|
25822
|
+
case ">":
|
|
25823
|
+
if (x[ri - 1] != "/") {
|
|
25824
|
+
++ri;
|
|
25825
|
+
break outa;
|
|
25826
|
+
}
|
|
25827
|
+
if (opts && opts.cellStyles) {
|
|
25828
|
+
tag = parsexmltag(x.slice(rstarti, ri), true);
|
|
25829
|
+
tagr = tag.r != null ? parseInt(tag.r, 10) : tagr + 1;
|
|
25830
|
+
tagc = -1;
|
|
25831
|
+
if (opts.sheetRows && opts.sheetRows < tagr)
|
|
25832
|
+
continue;
|
|
25833
|
+
rowobj = {};
|
|
25834
|
+
rowrite = false;
|
|
25835
|
+
if (tag.ht) {
|
|
25836
|
+
rowrite = true;
|
|
25837
|
+
rowobj.hpt = parseFloat(tag.ht);
|
|
25838
|
+
rowobj.hpx = pt2px(rowobj.hpt);
|
|
25839
|
+
}
|
|
25840
|
+
if (tag.hidden == "1") {
|
|
25841
|
+
rowrite = true;
|
|
25842
|
+
rowobj.hidden = true;
|
|
25843
|
+
}
|
|
25844
|
+
if (tag.outlineLevel != null) {
|
|
25845
|
+
rowrite = true;
|
|
25846
|
+
rowobj.level = +tag.outlineLevel;
|
|
25847
|
+
}
|
|
25848
|
+
if (rowrite)
|
|
25849
|
+
rows[tagr - 1] = rowobj;
|
|
25850
|
+
}
|
|
25851
|
+
break;
|
|
25852
|
+
case "<":
|
|
25853
|
+
rstarti = ri;
|
|
25854
|
+
break;
|
|
25855
|
+
}
|
|
25856
|
+
if (rstarti >= ri)
|
|
25857
|
+
break;
|
|
25858
|
+
tag = parsexmltag(x.slice(rstarti, ri), true);
|
|
25041
25859
|
tagr = tag.r != null ? parseInt(tag.r, 10) : tagr + 1;
|
|
25042
25860
|
tagc = -1;
|
|
25043
25861
|
if (opts.sheetRows && opts.sheetRows < tagr)
|
|
@@ -25338,7 +26156,7 @@
|
|
|
25338
26156
|
o[o.length] = "</sheetData>";
|
|
25339
26157
|
o[sidx] = o[sidx].replace("/>", ">");
|
|
25340
26158
|
}
|
|
25341
|
-
if (ws["!protect"]
|
|
26159
|
+
if (ws["!protect"])
|
|
25342
26160
|
o[o.length] = write_ws_xml_protection(ws["!protect"]);
|
|
25343
26161
|
if (ws["!autofilter"] != null)
|
|
25344
26162
|
o[o.length] = write_ws_xml_autofilter(ws["!autofilter"], ws, wb, idx);
|
|
@@ -25461,14 +26279,26 @@
|
|
|
25461
26279
|
}
|
|
25462
26280
|
function parse_BrtWsProp(data, length) {
|
|
25463
26281
|
var z = {};
|
|
25464
|
-
data.l
|
|
26282
|
+
var f = data[data.l];
|
|
26283
|
+
++data.l;
|
|
26284
|
+
z.above = !(f & 64);
|
|
26285
|
+
z.left = !(f & 128);
|
|
26286
|
+
data.l += 18;
|
|
25465
26287
|
z.name = parse_XLSBCodeName(data, length - 19);
|
|
25466
26288
|
return z;
|
|
25467
26289
|
}
|
|
25468
|
-
function write_BrtWsProp(str, o) {
|
|
26290
|
+
function write_BrtWsProp(str, outl, o) {
|
|
25469
26291
|
if (o == null)
|
|
25470
26292
|
o = new_buf(84 + 4 * str.length);
|
|
25471
|
-
|
|
26293
|
+
var f = 192;
|
|
26294
|
+
if (outl) {
|
|
26295
|
+
if (outl.above)
|
|
26296
|
+
f &= ~64;
|
|
26297
|
+
if (outl.left)
|
|
26298
|
+
f &= ~128;
|
|
26299
|
+
}
|
|
26300
|
+
o.write_shift(1, f);
|
|
26301
|
+
for (var i2 = 1; i2 < 3; ++i2)
|
|
25472
26302
|
o.write_shift(1, 0);
|
|
25473
26303
|
write_BrtColor({ auto: 1 }, o);
|
|
25474
26304
|
o.write_shift(-4, -1);
|
|
@@ -25485,6 +26315,15 @@
|
|
|
25485
26315
|
o = new_buf(8);
|
|
25486
26316
|
return write_XLSBCell(ncell, o);
|
|
25487
26317
|
}
|
|
26318
|
+
function parse_BrtShortBlank(data) {
|
|
26319
|
+
var cell = parse_XLSBShortCell(data);
|
|
26320
|
+
return [cell];
|
|
26321
|
+
}
|
|
26322
|
+
function write_BrtShortBlank(cell, ncell, o) {
|
|
26323
|
+
if (o == null)
|
|
26324
|
+
o = new_buf(4);
|
|
26325
|
+
return write_XLSBShortCell(ncell, o);
|
|
26326
|
+
}
|
|
25488
26327
|
function parse_BrtCellBool(data) {
|
|
25489
26328
|
var cell = parse_XLSBCell(data);
|
|
25490
26329
|
var fBool = data.read_shift(1);
|
|
@@ -25497,11 +26336,44 @@
|
|
|
25497
26336
|
o.write_shift(1, cell.v ? 1 : 0);
|
|
25498
26337
|
return o;
|
|
25499
26338
|
}
|
|
26339
|
+
function parse_BrtShortBool(data) {
|
|
26340
|
+
var cell = parse_XLSBShortCell(data);
|
|
26341
|
+
var fBool = data.read_shift(1);
|
|
26342
|
+
return [cell, fBool, "b"];
|
|
26343
|
+
}
|
|
26344
|
+
function write_BrtShortBool(cell, ncell, o) {
|
|
26345
|
+
if (o == null)
|
|
26346
|
+
o = new_buf(5);
|
|
26347
|
+
write_XLSBShortCell(ncell, o);
|
|
26348
|
+
o.write_shift(1, cell.v ? 1 : 0);
|
|
26349
|
+
return o;
|
|
26350
|
+
}
|
|
25500
26351
|
function parse_BrtCellError(data) {
|
|
25501
26352
|
var cell = parse_XLSBCell(data);
|
|
25502
26353
|
var bError = data.read_shift(1);
|
|
25503
26354
|
return [cell, bError, "e"];
|
|
25504
26355
|
}
|
|
26356
|
+
function write_BrtCellError(cell, ncell, o) {
|
|
26357
|
+
if (o == null)
|
|
26358
|
+
o = new_buf(9);
|
|
26359
|
+
write_XLSBCell(ncell, o);
|
|
26360
|
+
o.write_shift(1, cell.v);
|
|
26361
|
+
return o;
|
|
26362
|
+
}
|
|
26363
|
+
function parse_BrtShortError(data) {
|
|
26364
|
+
var cell = parse_XLSBShortCell(data);
|
|
26365
|
+
var bError = data.read_shift(1);
|
|
26366
|
+
return [cell, bError, "e"];
|
|
26367
|
+
}
|
|
26368
|
+
function write_BrtShortError(cell, ncell, o) {
|
|
26369
|
+
if (o == null)
|
|
26370
|
+
o = new_buf(8);
|
|
26371
|
+
write_XLSBShortCell(ncell, o);
|
|
26372
|
+
o.write_shift(1, cell.v);
|
|
26373
|
+
o.write_shift(2, 0);
|
|
26374
|
+
o.write_shift(1, 0);
|
|
26375
|
+
return o;
|
|
26376
|
+
}
|
|
25505
26377
|
function parse_BrtCellIsst(data) {
|
|
25506
26378
|
var cell = parse_XLSBCell(data);
|
|
25507
26379
|
var isst = data.read_shift(4);
|
|
@@ -25514,6 +26386,18 @@
|
|
|
25514
26386
|
o.write_shift(4, ncell.v);
|
|
25515
26387
|
return o;
|
|
25516
26388
|
}
|
|
26389
|
+
function parse_BrtShortIsst(data) {
|
|
26390
|
+
var cell = parse_XLSBShortCell(data);
|
|
26391
|
+
var isst = data.read_shift(4);
|
|
26392
|
+
return [cell, isst, "s"];
|
|
26393
|
+
}
|
|
26394
|
+
function write_BrtShortIsst(cell, ncell, o) {
|
|
26395
|
+
if (o == null)
|
|
26396
|
+
o = new_buf(8);
|
|
26397
|
+
write_XLSBShortCell(ncell, o);
|
|
26398
|
+
o.write_shift(4, ncell.v);
|
|
26399
|
+
return o;
|
|
26400
|
+
}
|
|
25517
26401
|
function parse_BrtCellReal(data) {
|
|
25518
26402
|
var cell = parse_XLSBCell(data);
|
|
25519
26403
|
var value = parse_Xnum(data);
|
|
@@ -25526,6 +26410,18 @@
|
|
|
25526
26410
|
write_Xnum(cell.v, o);
|
|
25527
26411
|
return o;
|
|
25528
26412
|
}
|
|
26413
|
+
function parse_BrtShortReal(data) {
|
|
26414
|
+
var cell = parse_XLSBShortCell(data);
|
|
26415
|
+
var value = parse_Xnum(data);
|
|
26416
|
+
return [cell, value, "n"];
|
|
26417
|
+
}
|
|
26418
|
+
function write_BrtShortReal(cell, ncell, o) {
|
|
26419
|
+
if (o == null)
|
|
26420
|
+
o = new_buf(12);
|
|
26421
|
+
write_XLSBShortCell(ncell, o);
|
|
26422
|
+
write_Xnum(cell.v, o);
|
|
26423
|
+
return o;
|
|
26424
|
+
}
|
|
25529
26425
|
function parse_BrtCellRk(data) {
|
|
25530
26426
|
var cell = parse_XLSBCell(data);
|
|
25531
26427
|
var value = parse_RkNumber(data);
|
|
@@ -25538,6 +26434,18 @@
|
|
|
25538
26434
|
write_RkNumber(cell.v, o);
|
|
25539
26435
|
return o;
|
|
25540
26436
|
}
|
|
26437
|
+
function parse_BrtShortRk(data) {
|
|
26438
|
+
var cell = parse_XLSBShortCell(data);
|
|
26439
|
+
var value = parse_RkNumber(data);
|
|
26440
|
+
return [cell, value, "n"];
|
|
26441
|
+
}
|
|
26442
|
+
function write_BrtShortRk(cell, ncell, o) {
|
|
26443
|
+
if (o == null)
|
|
26444
|
+
o = new_buf(8);
|
|
26445
|
+
write_XLSBShortCell(ncell, o);
|
|
26446
|
+
write_RkNumber(cell.v, o);
|
|
26447
|
+
return o;
|
|
26448
|
+
}
|
|
25541
26449
|
function parse_BrtCellSt(data) {
|
|
25542
26450
|
var cell = parse_XLSBCell(data);
|
|
25543
26451
|
var value = parse_XLWideString(data);
|
|
@@ -25550,6 +26458,18 @@
|
|
|
25550
26458
|
write_XLWideString(cell.v, o);
|
|
25551
26459
|
return o.length > o.l ? o.slice(0, o.l) : o;
|
|
25552
26460
|
}
|
|
26461
|
+
function parse_BrtShortSt(data) {
|
|
26462
|
+
var cell = parse_XLSBShortCell(data);
|
|
26463
|
+
var value = parse_XLWideString(data);
|
|
26464
|
+
return [cell, value, "str"];
|
|
26465
|
+
}
|
|
26466
|
+
function write_BrtShortSt(cell, ncell, o) {
|
|
26467
|
+
if (o == null)
|
|
26468
|
+
o = new_buf(8 + 4 * cell.v.length);
|
|
26469
|
+
write_XLSBShortCell(ncell, o);
|
|
26470
|
+
write_XLWideString(cell.v, o);
|
|
26471
|
+
return o.length > o.l ? o.slice(0, o.l) : o;
|
|
26472
|
+
}
|
|
25553
26473
|
function parse_BrtFmlaBool(data, length, opts) {
|
|
25554
26474
|
var end = data.l + length;
|
|
25555
26475
|
var cell = parse_XLSBCell(data);
|
|
@@ -25799,6 +26719,7 @@
|
|
|
25799
26719
|
}
|
|
25800
26720
|
var colinfo = [], rowinfo = [];
|
|
25801
26721
|
var seencol = false;
|
|
26722
|
+
XLSBRecordEnum[16] = { n: "BrtShortReal", f: parse_BrtShortReal };
|
|
25802
26723
|
recordhopper(data, function ws_parse(val, R_n, RT) {
|
|
25803
26724
|
if (end)
|
|
25804
26725
|
return;
|
|
@@ -25828,6 +26749,12 @@
|
|
|
25828
26749
|
case 9:
|
|
25829
26750
|
case 10:
|
|
25830
26751
|
case 11:
|
|
26752
|
+
case 13:
|
|
26753
|
+
case 14:
|
|
26754
|
+
case 15:
|
|
26755
|
+
case 16:
|
|
26756
|
+
case 17:
|
|
26757
|
+
case 18:
|
|
25831
26758
|
p = { t: val[2] };
|
|
25832
26759
|
switch (val[2]) {
|
|
25833
26760
|
case "n":
|
|
@@ -25853,7 +26780,7 @@
|
|
|
25853
26780
|
}
|
|
25854
26781
|
if (cf = styles.CellXf[val[0].iStyleRef])
|
|
25855
26782
|
safe_format(p, cf.numFmtId, null, opts, themes, styles);
|
|
25856
|
-
C = val[0].c;
|
|
26783
|
+
C = val[0].c == -1 ? C + 1 : val[0].c;
|
|
25857
26784
|
if (opts.dense) {
|
|
25858
26785
|
if (!s[R])
|
|
25859
26786
|
s[R] = [];
|
|
@@ -25891,10 +26818,11 @@
|
|
|
25891
26818
|
}
|
|
25892
26819
|
break;
|
|
25893
26820
|
case 1:
|
|
26821
|
+
case 12:
|
|
25894
26822
|
if (!opts.sheetStubs || pass)
|
|
25895
26823
|
break;
|
|
25896
26824
|
p = { t: "z", v: void 0 };
|
|
25897
|
-
C = val[0].c;
|
|
26825
|
+
C = val[0].c == -1 ? C + 1 : val[0].c;
|
|
25898
26826
|
if (opts.dense) {
|
|
25899
26827
|
if (!s[R])
|
|
25900
26828
|
s[R] = [];
|
|
@@ -25977,6 +26905,8 @@
|
|
|
25977
26905
|
wb.Sheets[idx] = {};
|
|
25978
26906
|
if (val.name)
|
|
25979
26907
|
wb.Sheets[idx].CodeName = val.name;
|
|
26908
|
+
if (val.above || val.left)
|
|
26909
|
+
s["!outline"] = { above: val.above, left: val.left };
|
|
25980
26910
|
break;
|
|
25981
26911
|
case 137:
|
|
25982
26912
|
if (!wb.Views)
|
|
@@ -25993,6 +26923,7 @@
|
|
|
25993
26923
|
break;
|
|
25994
26924
|
case 151:
|
|
25995
26925
|
break;
|
|
26926
|
+
case 152:
|
|
25996
26927
|
case 175:
|
|
25997
26928
|
case 644:
|
|
25998
26929
|
case 625:
|
|
@@ -26032,7 +26963,6 @@
|
|
|
26032
26963
|
case 680:
|
|
26033
26964
|
case 1104:
|
|
26034
26965
|
case 1024:
|
|
26035
|
-
case 152:
|
|
26036
26966
|
case 663:
|
|
26037
26967
|
case 535:
|
|
26038
26968
|
case 678:
|
|
@@ -26094,9 +27024,9 @@
|
|
|
26094
27024
|
s["!rows"] = rowinfo;
|
|
26095
27025
|
return s;
|
|
26096
27026
|
}
|
|
26097
|
-
function write_ws_bin_cell(ba, cell, R, C, opts, ws) {
|
|
27027
|
+
function write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen) {
|
|
26098
27028
|
if (cell.v === void 0)
|
|
26099
|
-
return;
|
|
27029
|
+
return false;
|
|
26100
27030
|
var vv = "";
|
|
26101
27031
|
switch (cell.t) {
|
|
26102
27032
|
case "b":
|
|
@@ -26129,27 +27059,51 @@
|
|
|
26129
27059
|
vv = get_sst_id(opts.Strings, cell.v, opts.revStrings);
|
|
26130
27060
|
o.t = "s";
|
|
26131
27061
|
o.v = vv;
|
|
26132
|
-
|
|
27062
|
+
if (last_seen)
|
|
27063
|
+
write_record(ba, "BrtShortIsst", write_BrtShortIsst(cell, o));
|
|
27064
|
+
else
|
|
27065
|
+
write_record(ba, "BrtCellIsst", write_BrtCellIsst(cell, o));
|
|
26133
27066
|
} else {
|
|
26134
27067
|
o.t = "str";
|
|
26135
|
-
|
|
27068
|
+
if (last_seen)
|
|
27069
|
+
write_record(ba, "BrtShortSt", write_BrtShortSt(cell, o));
|
|
27070
|
+
else
|
|
27071
|
+
write_record(ba, "BrtCellSt", write_BrtCellSt(cell, o));
|
|
26136
27072
|
}
|
|
26137
|
-
return;
|
|
27073
|
+
return true;
|
|
26138
27074
|
case "n":
|
|
26139
|
-
if (cell.v == (cell.v | 0) && cell.v > -1e3 && cell.v < 1e3)
|
|
26140
|
-
|
|
26141
|
-
|
|
26142
|
-
|
|
26143
|
-
|
|
27075
|
+
if (cell.v == (cell.v | 0) && cell.v > -1e3 && cell.v < 1e3) {
|
|
27076
|
+
if (last_seen)
|
|
27077
|
+
write_record(ba, "BrtShortRk", write_BrtShortRk(cell, o));
|
|
27078
|
+
else
|
|
27079
|
+
write_record(ba, "BrtCellRk", write_BrtCellRk(cell, o));
|
|
27080
|
+
} else {
|
|
27081
|
+
if (last_seen)
|
|
27082
|
+
write_record(ba, "BrtShortReal", write_BrtShortReal(cell, o));
|
|
27083
|
+
else
|
|
27084
|
+
write_record(ba, "BrtCellReal", write_BrtCellReal(cell, o));
|
|
27085
|
+
}
|
|
27086
|
+
return true;
|
|
26144
27087
|
case "b":
|
|
26145
27088
|
o.t = "b";
|
|
26146
|
-
|
|
26147
|
-
|
|
27089
|
+
if (last_seen)
|
|
27090
|
+
write_record(ba, "BrtShortBool", write_BrtShortBool(cell, o));
|
|
27091
|
+
else
|
|
27092
|
+
write_record(ba, "BrtCellBool", write_BrtCellBool(cell, o));
|
|
27093
|
+
return true;
|
|
26148
27094
|
case "e":
|
|
26149
27095
|
o.t = "e";
|
|
26150
|
-
|
|
27096
|
+
if (last_seen)
|
|
27097
|
+
write_record(ba, "BrtShortError", write_BrtShortError(cell, o));
|
|
27098
|
+
else
|
|
27099
|
+
write_record(ba, "BrtCellError", write_BrtCellError(cell, o));
|
|
27100
|
+
return true;
|
|
26151
27101
|
}
|
|
26152
|
-
|
|
27102
|
+
if (last_seen)
|
|
27103
|
+
write_record(ba, "BrtShortBlank", write_BrtShortBlank(cell, o));
|
|
27104
|
+
else
|
|
27105
|
+
write_record(ba, "BrtCellBlank", write_BrtCellBlank(cell, o));
|
|
27106
|
+
return true;
|
|
26153
27107
|
}
|
|
26154
27108
|
function write_CELLTABLE(ba, ws, idx, opts) {
|
|
26155
27109
|
var range = safe_decode_range(ws["!ref"] || "A1"), ref, rr = "", cols = [];
|
|
@@ -26161,15 +27115,18 @@
|
|
|
26161
27115
|
for (var R = range.s.r; R <= cap; ++R) {
|
|
26162
27116
|
rr = encode_row(R);
|
|
26163
27117
|
write_row_header(ba, ws, range, R);
|
|
27118
|
+
var last_seen = false;
|
|
26164
27119
|
if (R <= range.e.r)
|
|
26165
27120
|
for (var C = range.s.c; C <= range.e.c; ++C) {
|
|
26166
27121
|
if (R === range.s.r)
|
|
26167
27122
|
cols[C] = encode_col(C);
|
|
26168
27123
|
ref = cols[C] + rr;
|
|
26169
27124
|
var cell = dense ? (ws[R] || [])[C] : ws[ref];
|
|
26170
|
-
if (!cell)
|
|
27125
|
+
if (!cell) {
|
|
27126
|
+
last_seen = false;
|
|
26171
27127
|
continue;
|
|
26172
|
-
|
|
27128
|
+
}
|
|
27129
|
+
last_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);
|
|
26173
27130
|
}
|
|
26174
27131
|
}
|
|
26175
27132
|
write_record(ba, "BrtEndSheetData");
|
|
@@ -26279,8 +27236,8 @@
|
|
|
26279
27236
|
ws["!links"] = [];
|
|
26280
27237
|
ws["!comments"] = [];
|
|
26281
27238
|
write_record(ba, "BrtBeginSheet");
|
|
26282
|
-
if (wb.vbaraw)
|
|
26283
|
-
write_record(ba, "BrtWsProp", write_BrtWsProp(c));
|
|
27239
|
+
if (wb.vbaraw || ws["!outline"])
|
|
27240
|
+
write_record(ba, "BrtWsProp", write_BrtWsProp(c, ws["!outline"]));
|
|
26284
27241
|
write_record(ba, "BrtWsDim", write_BrtWsDim(r));
|
|
26285
27242
|
write_WSVIEWS2(ba, ws, wb.Workbook);
|
|
26286
27243
|
write_WSFMTINFO(ba, ws);
|
|
@@ -26945,6 +27902,7 @@
|
|
|
26945
27902
|
var supbooks = [[]];
|
|
26946
27903
|
supbooks.SheetNames = [];
|
|
26947
27904
|
supbooks.XTI = [];
|
|
27905
|
+
XLSBRecordEnum[16] = { n: "BrtFRTArchID$", f: parse_BrtFRTArchID$ };
|
|
26948
27906
|
recordhopper(data, function hopper_wb(val, R_n, RT) {
|
|
26949
27907
|
switch (RT) {
|
|
26950
27908
|
case 156:
|
|
@@ -26984,12 +27942,16 @@
|
|
|
26984
27942
|
break;
|
|
26985
27943
|
case 361:
|
|
26986
27944
|
break;
|
|
27945
|
+
case 2071:
|
|
27946
|
+
case 158:
|
|
27947
|
+
case 143:
|
|
27948
|
+
case 664:
|
|
27949
|
+
case 353:
|
|
27950
|
+
break;
|
|
26987
27951
|
case 3072:
|
|
26988
27952
|
case 3073:
|
|
26989
|
-
case 2071:
|
|
26990
27953
|
case 534:
|
|
26991
27954
|
case 677:
|
|
26992
|
-
case 158:
|
|
26993
27955
|
case 157:
|
|
26994
27956
|
case 610:
|
|
26995
27957
|
case 2050:
|
|
@@ -27060,7 +28022,6 @@
|
|
|
27060
28022
|
write_XLWideString(XLSX2.version, o);
|
|
27061
28023
|
write_XLWideString(XLSX2.version, o);
|
|
27062
28024
|
write_XLWideString("7262", o);
|
|
27063
|
-
o.length = o.l;
|
|
27064
28025
|
return o.length > o.l ? o.slice(0, o.l) : o;
|
|
27065
28026
|
}
|
|
27066
28027
|
function write_BrtBookView(idx, o) {
|
|
@@ -27420,6 +28381,12 @@
|
|
|
27420
28381
|
str = utf8read(str);
|
|
27421
28382
|
}
|
|
27422
28383
|
var opening = str.slice(0, 1024).toLowerCase(), ishtml = false;
|
|
28384
|
+
opening = opening.replace(/".*?"/g, "");
|
|
28385
|
+
if ((opening.indexOf(">") & 1023) > Math.min(opening.indexOf(",") & 1023, opening.indexOf(";") & 1023)) {
|
|
28386
|
+
var _o = dup(opts);
|
|
28387
|
+
_o.type = "string";
|
|
28388
|
+
return PRN.to_workbook(str, _o);
|
|
28389
|
+
}
|
|
27423
28390
|
if (opening.indexOf("<?xml") == -1)
|
|
27424
28391
|
["html", "table", "head", "meta", "script", "style", "div"].forEach(function(tag) {
|
|
27425
28392
|
if (opening.indexOf("<" + tag) >= 0)
|
|
@@ -27482,7 +28449,7 @@
|
|
|
27482
28449
|
cursheet[encode_col(c) + encode_row(r)] = cell;
|
|
27483
28450
|
}
|
|
27484
28451
|
if (cell.HRef) {
|
|
27485
|
-
cell.l = { Target: cell.HRef };
|
|
28452
|
+
cell.l = { Target: unescapexml(cell.HRef) };
|
|
27486
28453
|
if (cell.HRefScreenTip)
|
|
27487
28454
|
cell.l.Tooltip = cell.HRefScreenTip;
|
|
27488
28455
|
delete cell.HRef;
|
|
@@ -27800,6 +28767,8 @@
|
|
|
27800
28767
|
} else if (Rn[0].charAt(Rn[0].length - 2) !== "/")
|
|
27801
28768
|
state.push([Rn[3], true]);
|
|
27802
28769
|
break;
|
|
28770
|
+
case "null":
|
|
28771
|
+
break;
|
|
27803
28772
|
default:
|
|
27804
28773
|
if (state.length == 0 && Rn[3] == "document")
|
|
27805
28774
|
return parse_fods(str, opts);
|
|
@@ -28033,6 +29002,8 @@
|
|
|
28033
29002
|
break;
|
|
28034
29003
|
case "print":
|
|
28035
29004
|
break;
|
|
29005
|
+
case "printerrors":
|
|
29006
|
+
break;
|
|
28036
29007
|
case "panes":
|
|
28037
29008
|
break;
|
|
28038
29009
|
case "scale":
|
|
@@ -28112,6 +29083,9 @@
|
|
|
28112
29083
|
case "allowsizerows":
|
|
28113
29084
|
break;
|
|
28114
29085
|
case "nosummaryrowsbelowdetail":
|
|
29086
|
+
if (!cursheet["!outline"])
|
|
29087
|
+
cursheet["!outline"] = {};
|
|
29088
|
+
cursheet["!outline"].above = true;
|
|
28115
29089
|
break;
|
|
28116
29090
|
case "tabcolorindex":
|
|
28117
29091
|
break;
|
|
@@ -28120,6 +29094,9 @@
|
|
|
28120
29094
|
case "showpagelayoutzoom":
|
|
28121
29095
|
break;
|
|
28122
29096
|
case "nosummarycolumnsrightdetail":
|
|
29097
|
+
if (!cursheet["!outline"])
|
|
29098
|
+
cursheet["!outline"] = {};
|
|
29099
|
+
cursheet["!outline"].left = true;
|
|
28123
29100
|
break;
|
|
28124
29101
|
case "blackandwhite":
|
|
28125
29102
|
break;
|
|
@@ -28933,7 +29910,7 @@
|
|
|
28933
29910
|
} else
|
|
28934
29911
|
p.w = SSF._general(p.v);
|
|
28935
29912
|
} else
|
|
28936
|
-
p.w = SSF.format(fmtid, p.v, { date1904: !!date1904 });
|
|
29913
|
+
p.w = SSF.format(fmtid, p.v, { date1904: !!date1904, dateNF: opts && opts.dateNF });
|
|
28937
29914
|
} catch (e) {
|
|
28938
29915
|
if (opts.WTF)
|
|
28939
29916
|
throw e;
|
|
@@ -28966,7 +29943,6 @@
|
|
|
28966
29943
|
var arrayf = [];
|
|
28967
29944
|
var temp_val;
|
|
28968
29945
|
var country;
|
|
28969
|
-
var cell_valid = true;
|
|
28970
29946
|
var XFs = [];
|
|
28971
29947
|
var palette = [];
|
|
28972
29948
|
var Workbook = { Sheets: [], WBProps: { date1904: false }, Views: [{}] }, wsprops = {};
|
|
@@ -28995,8 +29971,6 @@
|
|
|
28995
29971
|
if (file_depth > 1)
|
|
28996
29972
|
return;
|
|
28997
29973
|
if (options2.sheetRows && cell.r >= options2.sheetRows)
|
|
28998
|
-
cell_valid = false;
|
|
28999
|
-
if (!cell_valid)
|
|
29000
29974
|
return;
|
|
29001
29975
|
if (options2.cellStyles && line.XF && line.XF.data)
|
|
29002
29976
|
process_cell_style(cell, line, options2);
|
|
@@ -29177,6 +30151,10 @@
|
|
|
29177
30151
|
case "WsBool":
|
|
29178
30152
|
if (val.fDialog)
|
|
29179
30153
|
out["!type"] = "dialog";
|
|
30154
|
+
if (!val.fBelow)
|
|
30155
|
+
(out["!outline"] || (out["!outline"] = {})).above = true;
|
|
30156
|
+
if (!val.fRight)
|
|
30157
|
+
(out["!outline"] || (out["!outline"] = {})).left = true;
|
|
29180
30158
|
break;
|
|
29181
30159
|
case "XF":
|
|
29182
30160
|
XFs.push(val);
|
|
@@ -29301,17 +30279,22 @@
|
|
|
29301
30279
|
2: 2,
|
|
29302
30280
|
7: 2
|
|
29303
30281
|
}[val.BIFFVer] || 8;
|
|
30282
|
+
opts.biffguess = val.BIFFVer == 0;
|
|
30283
|
+
if (val.BIFFVer == 0 && val.dt == 4096) {
|
|
30284
|
+
opts.biff = 5;
|
|
30285
|
+
seen_codepage = true;
|
|
30286
|
+
set_cp(opts.codepage = 28591);
|
|
30287
|
+
}
|
|
29304
30288
|
if (opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16)
|
|
29305
30289
|
opts.biff = 2;
|
|
29306
30290
|
if (file_depth++)
|
|
29307
30291
|
break;
|
|
29308
|
-
cell_valid = true;
|
|
29309
30292
|
out = options.dense ? [] : {};
|
|
29310
30293
|
if (opts.biff < 8 && !seen_codepage) {
|
|
29311
30294
|
seen_codepage = true;
|
|
29312
30295
|
set_cp(opts.codepage = options.codepage || 1252);
|
|
29313
30296
|
}
|
|
29314
|
-
if (opts.biff < 5) {
|
|
30297
|
+
if (opts.biff < 5 || val.BIFFVer == 0 && val.dt == 4096) {
|
|
29315
30298
|
if (cur_sheet === "")
|
|
29316
30299
|
cur_sheet = "Sheet1";
|
|
29317
30300
|
range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
@@ -29344,7 +30327,7 @@
|
|
|
29344
30327
|
}
|
|
29345
30328
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe] || {}, v: val.val, t: "n" };
|
|
29346
30329
|
if (BIFF2Fmt > 0)
|
|
29347
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30330
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29348
30331
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29349
30332
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29350
30333
|
}
|
|
@@ -29353,7 +30336,7 @@
|
|
|
29353
30336
|
{
|
|
29354
30337
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe], v: val.val, t: val.t };
|
|
29355
30338
|
if (BIFF2Fmt > 0)
|
|
29356
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30339
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29357
30340
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29358
30341
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29359
30342
|
}
|
|
@@ -29362,7 +30345,7 @@
|
|
|
29362
30345
|
{
|
|
29363
30346
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe], v: val.rknum, t: "n" };
|
|
29364
30347
|
if (BIFF2Fmt > 0)
|
|
29365
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30348
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29366
30349
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29367
30350
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29368
30351
|
}
|
|
@@ -29373,7 +30356,7 @@
|
|
|
29373
30356
|
var ixfe = val.rkrec[j - val.c][0];
|
|
29374
30357
|
temp_val = { ixfe, XF: XFs[ixfe], v: val.rkrec[j - val.c][1], t: "n" };
|
|
29375
30358
|
if (BIFF2Fmt > 0)
|
|
29376
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30359
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29377
30360
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29378
30361
|
addcell({ c: j, r: val.r }, temp_val, options);
|
|
29379
30362
|
}
|
|
@@ -29400,7 +30383,7 @@
|
|
|
29400
30383
|
temp_val.f = "" + stringify_formula(val.formula, range, val.cell, supbooks, opts);
|
|
29401
30384
|
}
|
|
29402
30385
|
if (BIFF2Fmt > 0)
|
|
29403
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30386
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29404
30387
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29405
30388
|
addcell(val.cell, temp_val, options);
|
|
29406
30389
|
last_formula = val;
|
|
@@ -29416,7 +30399,7 @@
|
|
|
29416
30399
|
temp_val.f = "" + stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);
|
|
29417
30400
|
}
|
|
29418
30401
|
if (BIFF2Fmt > 0)
|
|
29419
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30402
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29420
30403
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29421
30404
|
addcell(last_formula.cell, temp_val, options);
|
|
29422
30405
|
last_formula = null;
|
|
@@ -29441,8 +30424,6 @@
|
|
|
29441
30424
|
break;
|
|
29442
30425
|
case "ShrFmla":
|
|
29443
30426
|
{
|
|
29444
|
-
if (!cell_valid)
|
|
29445
|
-
break;
|
|
29446
30427
|
if (!options.cellFormula)
|
|
29447
30428
|
break;
|
|
29448
30429
|
if (last_cell) {
|
|
@@ -29460,7 +30441,7 @@
|
|
|
29460
30441
|
temp_val.h = sst[val.isst].h;
|
|
29461
30442
|
temp_val.XF = XFs[temp_val.ixfe];
|
|
29462
30443
|
if (BIFF2Fmt > 0)
|
|
29463
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30444
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29464
30445
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29465
30446
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29466
30447
|
break;
|
|
@@ -29468,7 +30449,7 @@
|
|
|
29468
30449
|
if (options.sheetStubs) {
|
|
29469
30450
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe], t: "z" };
|
|
29470
30451
|
if (BIFF2Fmt > 0)
|
|
29471
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30452
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29472
30453
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29473
30454
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29474
30455
|
}
|
|
@@ -29479,7 +30460,7 @@
|
|
|
29479
30460
|
var _ixfe = val.ixfe[_j - val.c];
|
|
29480
30461
|
temp_val = { ixfe: _ixfe, XF: XFs[_ixfe], t: "z" };
|
|
29481
30462
|
if (BIFF2Fmt > 0)
|
|
29482
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30463
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29483
30464
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29484
30465
|
addcell({ c: _j, r: val.r }, temp_val, options);
|
|
29485
30466
|
}
|
|
@@ -29491,7 +30472,7 @@
|
|
|
29491
30472
|
temp_val = make_cell(val.val, val.ixfe, "s");
|
|
29492
30473
|
temp_val.XF = XFs[temp_val.ixfe];
|
|
29493
30474
|
if (BIFF2Fmt > 0)
|
|
29494
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30475
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29495
30476
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29496
30477
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29497
30478
|
break;
|
|
@@ -29604,7 +30585,7 @@
|
|
|
29604
30585
|
if (!opts.cellStyles)
|
|
29605
30586
|
break;
|
|
29606
30587
|
while (val.e >= val.s) {
|
|
29607
|
-
colinfo[val.e--] = { width: val.w / 256 };
|
|
30588
|
+
colinfo[val.e--] = { width: val.w / 256, level: val.level || 0, hidden: !!(val.flags & 1) };
|
|
29608
30589
|
if (!seencol) {
|
|
29609
30590
|
seencol = true;
|
|
29610
30591
|
find_mdw_colw(val.w / 256);
|
|
@@ -29639,6 +30620,8 @@
|
|
|
29639
30620
|
default_margins(out["!margins"] = {});
|
|
29640
30621
|
out["!margins"][Rn.slice(0, -6).toLowerCase()] = val;
|
|
29641
30622
|
break;
|
|
30623
|
+
case "Selection":
|
|
30624
|
+
break;
|
|
29642
30625
|
case "Setup":
|
|
29643
30626
|
if (!out["!margins"])
|
|
29644
30627
|
default_margins(out["!margins"] = {});
|
|
@@ -29691,8 +30674,6 @@
|
|
|
29691
30674
|
break;
|
|
29692
30675
|
case "QsiSXTag":
|
|
29693
30676
|
break;
|
|
29694
|
-
case "Selection":
|
|
29695
|
-
break;
|
|
29696
30677
|
case "Feat":
|
|
29697
30678
|
break;
|
|
29698
30679
|
case "FeatHdr":
|
|
@@ -30034,6 +31015,8 @@
|
|
|
30034
31015
|
case "BIFF3XF":
|
|
30035
31016
|
case "BIFF4XF":
|
|
30036
31017
|
break;
|
|
31018
|
+
case "BIFF2XFINDEX":
|
|
31019
|
+
break;
|
|
30037
31020
|
case "BIFF4FMTCNT":
|
|
30038
31021
|
case "BIFF2ROW":
|
|
30039
31022
|
case "BIFF2WINDOW2":
|
|
@@ -30084,11 +31067,16 @@
|
|
|
30084
31067
|
});
|
|
30085
31068
|
if (!options.bookSheets)
|
|
30086
31069
|
wb.Sheets = Sheets;
|
|
31070
|
+
if (!wb.SheetNames.length && Preamble["!ref"]) {
|
|
31071
|
+
wb.SheetNames.push("Sheet1");
|
|
31072
|
+
if (wb.Sheets)
|
|
31073
|
+
wb.Sheets["Sheet1"] = Preamble;
|
|
31074
|
+
} else
|
|
31075
|
+
wb.Preamble = Preamble;
|
|
30087
31076
|
if (wb.Sheets)
|
|
30088
31077
|
FilterDatabases.forEach(function(r, i2) {
|
|
30089
31078
|
wb.Sheets[wb.SheetNames[i2]]["!autofilter"] = r;
|
|
30090
31079
|
});
|
|
30091
|
-
wb.Preamble = Preamble;
|
|
30092
31080
|
wb.Strings = sst;
|
|
30093
31081
|
wb.SSF = SSF.get_table();
|
|
30094
31082
|
if (opts.enc)
|
|
@@ -30208,6 +31196,8 @@
|
|
|
30208
31196
|
WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));
|
|
30209
31197
|
else if ((_data = CFB.find(cfb, "NativeContent_MAIN")) && _data.content)
|
|
30210
31198
|
WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));
|
|
31199
|
+
else if ((_data = CFB.find(cfb, "MN0")) && _data.content)
|
|
31200
|
+
throw new Error("Unsupported Works 4 for Mac file");
|
|
30211
31201
|
else
|
|
30212
31202
|
throw new Error("Cannot find Workbook stream");
|
|
30213
31203
|
if (options.bookVBA && cfb.FullPaths && CFB.find(cfb, "/_VBA_PROJECT_CUR/VBA/dir"))
|
|
@@ -30262,7 +31252,13 @@
|
|
|
30262
31252
|
9: { n: "BrtFmlaNum", f: parse_BrtFmlaNum },
|
|
30263
31253
|
10: { n: "BrtFmlaBool", f: parse_BrtFmlaBool },
|
|
30264
31254
|
11: { n: "BrtFmlaError", f: parse_BrtFmlaError },
|
|
30265
|
-
|
|
31255
|
+
12: { n: "BrtShortBlank", f: parse_BrtShortBlank },
|
|
31256
|
+
13: { n: "BrtShortRk", f: parse_BrtShortRk },
|
|
31257
|
+
14: { n: "BrtShortError", f: parse_BrtShortError },
|
|
31258
|
+
15: { n: "BrtShortBool", f: parse_BrtShortBool },
|
|
31259
|
+
16: { n: "BrtShortReal", f: parse_BrtShortReal },
|
|
31260
|
+
17: { n: "BrtShortSt", f: parse_BrtShortSt },
|
|
31261
|
+
18: { n: "BrtShortIsst", f: parse_BrtShortIsst },
|
|
30266
31262
|
19: { n: "BrtSSTItem", f: parse_RichStr },
|
|
30267
31263
|
20: { n: "BrtPCDIMissing" },
|
|
30268
31264
|
21: { n: "BrtPCDINumber" },
|
|
@@ -31085,11 +32081,9 @@
|
|
|
31085
32081
|
65535: { n: "" }
|
|
31086
32082
|
};
|
|
31087
32083
|
var XLSBRE = evert_key(XLSBRecordEnum, "n");
|
|
32084
|
+
XLSBRE["BrtFRTArchID$"] = 16;
|
|
31088
32085
|
var XLSRecordEnum = {
|
|
31089
|
-
3: { n: "BIFF2NUM", f: parse_BIFF2NUM },
|
|
31090
|
-
4: { n: "BIFF2STR", f: parse_BIFF2STR },
|
|
31091
32086
|
6: { n: "Formula", f: parse_Formula },
|
|
31092
|
-
9: { n: "BOF", f: parse_BOF },
|
|
31093
32087
|
10: { n: "EOF", f: parsenoop2 },
|
|
31094
32088
|
12: { n: "CalcCount", f: parseuint16 },
|
|
31095
32089
|
13: { n: "CalcMode", f: parseuint16 },
|
|
@@ -31110,7 +32104,6 @@
|
|
|
31110
32104
|
29: { n: "Selection" },
|
|
31111
32105
|
34: { n: "Date1904", f: parsebool },
|
|
31112
32106
|
35: { n: "ExternName", f: parse_ExternName },
|
|
31113
|
-
36: { n: "COLWIDTH" },
|
|
31114
32107
|
38: { n: "LeftMargin", f: parse_Xnum },
|
|
31115
32108
|
39: { n: "RightMargin", f: parse_Xnum },
|
|
31116
32109
|
40: { n: "TopMargin", f: parse_Xnum },
|
|
@@ -31280,7 +32273,6 @@
|
|
|
31280
32273
|
515: { n: "Number", f: parse_Number },
|
|
31281
32274
|
516: { n: "Label", f: parse_Label },
|
|
31282
32275
|
517: { n: "BoolErr", f: parse_BoolErr },
|
|
31283
|
-
518: { n: "Formula", f: parse_Formula },
|
|
31284
32276
|
519: { n: "String", f: parse_String },
|
|
31285
32277
|
520: { n: "Row", f: parse_Row },
|
|
31286
32278
|
523: { n: "Index" },
|
|
@@ -31290,7 +32282,6 @@
|
|
|
31290
32282
|
574: { n: "Window2", f: parse_Window2 },
|
|
31291
32283
|
638: { n: "RK", f: parse_RK },
|
|
31292
32284
|
659: { n: "Style" },
|
|
31293
|
-
1030: { n: "Formula", f: parse_Formula },
|
|
31294
32285
|
1048: { n: "BigName" },
|
|
31295
32286
|
1054: { n: "Format", f: parse_Format },
|
|
31296
32287
|
1084: { n: "ContinueBigName" },
|
|
@@ -31446,21 +32437,27 @@
|
|
|
31446
32437
|
4199: { n: "BopPopCustom" },
|
|
31447
32438
|
4200: { n: "Fbi2" },
|
|
31448
32439
|
0: { n: "Dimensions", f: parse_Dimensions },
|
|
32440
|
+
1: { n: "BIFF2BLANK" },
|
|
31449
32441
|
2: { n: "BIFF2INT", f: parse_BIFF2INT },
|
|
32442
|
+
3: { n: "BIFF2NUM", f: parse_BIFF2NUM },
|
|
32443
|
+
4: { n: "BIFF2STR", f: parse_BIFF2STR },
|
|
31450
32444
|
5: { n: "BoolErr", f: parse_BoolErr },
|
|
31451
32445
|
7: { n: "String", f: parse_BIFF2STRING },
|
|
31452
32446
|
8: { n: "BIFF2ROW" },
|
|
32447
|
+
9: { n: "BOF", f: parse_BOF },
|
|
31453
32448
|
11: { n: "Index" },
|
|
31454
32449
|
22: { n: "ExternCount", f: parseuint16 },
|
|
31455
32450
|
30: { n: "BIFF2FORMAT", f: parse_BIFF2Format },
|
|
31456
32451
|
31: { n: "BIFF2FMTCNT" },
|
|
31457
32452
|
32: { n: "BIFF2COLINFO" },
|
|
31458
32453
|
33: { n: "Array", f: parse_Array },
|
|
32454
|
+
36: { n: "COLWIDTH" },
|
|
31459
32455
|
37: { n: "DefaultRowHeight", f: parse_DefaultRowHeight },
|
|
31460
32456
|
50: { n: "BIFF2FONTXTRA", f: parse_BIFF2FONTXTRA },
|
|
31461
|
-
52: { n: "DDEObjName" },
|
|
31462
32457
|
62: { n: "BIFF2WINDOW2" },
|
|
32458
|
+
52: { n: "DDEObjName" },
|
|
31463
32459
|
67: { n: "BIFF2XF" },
|
|
32460
|
+
68: { n: "BIFF2XFINDEX", f: parseuint16 },
|
|
31464
32461
|
69: { n: "BIFF2FONTCLR" },
|
|
31465
32462
|
86: { n: "BIFF4FMTCNT" },
|
|
31466
32463
|
126: { n: "RK" },
|
|
@@ -31484,11 +32481,13 @@
|
|
|
31484
32481
|
234: { n: "TabIdConf" },
|
|
31485
32482
|
354: { n: "XL5Modify" },
|
|
31486
32483
|
421: { n: "FileSharing2" },
|
|
32484
|
+
518: { n: "Formula", f: parse_Formula },
|
|
31487
32485
|
521: { n: "BOF", f: parse_BOF },
|
|
31488
32486
|
536: { n: "Lbl", f: parse_Lbl },
|
|
31489
32487
|
547: { n: "ExternName", f: parse_ExternName },
|
|
31490
32488
|
561: { n: "Font" },
|
|
31491
32489
|
579: { n: "BIFF3XF" },
|
|
32490
|
+
1030: { n: "Formula", f: parse_Formula },
|
|
31492
32491
|
1033: { n: "BOF", f: parse_BOF },
|
|
31493
32492
|
1091: { n: "BIFF4XF" },
|
|
31494
32493
|
2157: { n: "FeatInfo" },
|
|
@@ -31511,7 +32510,7 @@
|
|
|
31511
32510
|
};
|
|
31512
32511
|
var XLSRE = evert_key(XLSRecordEnum, "n");
|
|
31513
32512
|
function write_biff_rec(ba, type, payload, length) {
|
|
31514
|
-
var t = +type || +XLSRE[type];
|
|
32513
|
+
var t = typeof type == "number" ? type : +type || +XLSRE[type];
|
|
31515
32514
|
if (isNaN(t))
|
|
31516
32515
|
return;
|
|
31517
32516
|
var len = length || (payload || []).length || 0;
|
|
@@ -31564,13 +32563,7 @@
|
|
|
31564
32563
|
function write_BIFF2BERR(r, c, val, t) {
|
|
31565
32564
|
var out = new_buf(9);
|
|
31566
32565
|
write_BIFF2Cell(out, r, c);
|
|
31567
|
-
|
|
31568
|
-
out.write_shift(1, val);
|
|
31569
|
-
out.write_shift(1, 1);
|
|
31570
|
-
} else {
|
|
31571
|
-
out.write_shift(1, val ? 1 : 0);
|
|
31572
|
-
out.write_shift(1, 0);
|
|
31573
|
-
}
|
|
32566
|
+
write_Bes(val, t || "b", out);
|
|
31574
32567
|
return out;
|
|
31575
32568
|
}
|
|
31576
32569
|
function write_BIFF2LABEL(r, c, val) {
|
|
@@ -31597,7 +32590,7 @@
|
|
|
31597
32590
|
return;
|
|
31598
32591
|
case "s":
|
|
31599
32592
|
case "str":
|
|
31600
|
-
write_biff_rec(ba, 4, write_BIFF2LABEL(R, C, cell.v));
|
|
32593
|
+
write_biff_rec(ba, 4, write_BIFF2LABEL(R, C, (cell.v || "").slice(0, 255)));
|
|
31601
32594
|
return;
|
|
31602
32595
|
}
|
|
31603
32596
|
write_biff_rec(ba, 1, write_BIFF2Cell(null, R, C));
|
|
@@ -31636,7 +32629,7 @@
|
|
|
31636
32629
|
idx = i2;
|
|
31637
32630
|
if (idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet)
|
|
31638
32631
|
throw new Error("Sheet not found: " + o.sheet);
|
|
31639
|
-
write_biff_rec(ba, 9, write_BOF(wb, 16, o));
|
|
32632
|
+
write_biff_rec(ba, o.biff == 4 ? 1033 : o.biff == 3 ? 521 : 9, write_BOF(wb, 16, o));
|
|
31640
32633
|
write_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);
|
|
31641
32634
|
write_biff_rec(ba, 10);
|
|
31642
32635
|
return ba.end();
|
|
@@ -31698,6 +32691,16 @@
|
|
|
31698
32691
|
}
|
|
31699
32692
|
delete ws["!links"];
|
|
31700
32693
|
}
|
|
32694
|
+
function write_ws_cols_biff8(ba, cols, ws) {
|
|
32695
|
+
if (!cols)
|
|
32696
|
+
return;
|
|
32697
|
+
var cnt = 0;
|
|
32698
|
+
cols.forEach(function(col, idx) {
|
|
32699
|
+
if (++cnt <= 256 && col) {
|
|
32700
|
+
write_biff_rec(ba, "ColInfo", write_ColInfo(col_obj_w(idx, col), idx));
|
|
32701
|
+
}
|
|
32702
|
+
});
|
|
32703
|
+
}
|
|
31701
32704
|
function write_ws_biff8_cell(ba, cell, R, C, opts) {
|
|
31702
32705
|
var os = 16 + get_cell_style(opts.cellXfs, cell, opts);
|
|
31703
32706
|
if (cell.v == null && !cell.bf) {
|
|
@@ -31723,7 +32726,7 @@
|
|
|
31723
32726
|
var isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);
|
|
31724
32727
|
write_biff_rec(ba, "LabelSst", write_LabelSst(R, C, isst, os, opts));
|
|
31725
32728
|
} else
|
|
31726
|
-
write_biff_rec(ba, "Label", write_Label(R, C, cell.v, os, opts));
|
|
32729
|
+
write_biff_rec(ba, "Label", write_Label(R, C, (cell.v || "").slice(0, 255), os, opts));
|
|
31727
32730
|
break;
|
|
31728
32731
|
default:
|
|
31729
32732
|
write_biff_rec(ba, "Blank", write_XLSCell(R, C, os));
|
|
@@ -31758,6 +32761,8 @@
|
|
|
31758
32761
|
write_biff_rec(ba, "Guts", write_Guts([0, 0]));
|
|
31759
32762
|
write_biff_rec(ba, "HCenter", writebool(false));
|
|
31760
32763
|
write_biff_rec(ba, "VCenter", writebool(false));
|
|
32764
|
+
if (b8)
|
|
32765
|
+
write_ws_cols_biff8(ba, ws["!cols"], ws);
|
|
31761
32766
|
write_biff_rec(ba, 512, write_Dimensions(range, opts));
|
|
31762
32767
|
if (b8)
|
|
31763
32768
|
ws["!links"] = [];
|
|
@@ -31895,6 +32900,15 @@
|
|
|
31895
32900
|
return __toBuffer([bufs]);
|
|
31896
32901
|
}
|
|
31897
32902
|
function write_biff_buf(wb, opts) {
|
|
32903
|
+
for (var i2 = 0; i2 <= wb.SheetNames.length; ++i2) {
|
|
32904
|
+
var ws = wb.Sheets[wb.SheetNames[i2]];
|
|
32905
|
+
if (!ws || !ws["!ref"])
|
|
32906
|
+
continue;
|
|
32907
|
+
var range = decode_range(ws["!ref"]);
|
|
32908
|
+
if (range.e.c > 255) {
|
|
32909
|
+
console.error("Worksheet '" + wb.SheetNames[i2] + "' extends beyond column IV (255). Data may be lost.");
|
|
32910
|
+
}
|
|
32911
|
+
}
|
|
31898
32912
|
var o = opts || {};
|
|
31899
32913
|
switch (o.biff || 2) {
|
|
31900
32914
|
case 8:
|
|
@@ -31956,7 +32970,7 @@
|
|
|
31956
32970
|
CS = tag.colspan ? +tag.colspan : 1;
|
|
31957
32971
|
if ((RS = +tag.rowspan) > 1 || CS > 1)
|
|
31958
32972
|
merges.push({ s: { r: R, c: C }, e: { r: R + (RS || 1) - 1, c: C + CS - 1 } });
|
|
31959
|
-
var _t = tag.t || "";
|
|
32973
|
+
var _t = tag.t || tag["data-t"] || "";
|
|
31960
32974
|
if (!m.length) {
|
|
31961
32975
|
C += CS;
|
|
31962
32976
|
continue;
|
|
@@ -32001,7 +33015,16 @@
|
|
|
32001
33015
|
return ws;
|
|
32002
33016
|
}
|
|
32003
33017
|
function html_to_book(str, opts) {
|
|
32004
|
-
|
|
33018
|
+
var mtch = str.match(/<table.*?>[\s\S]*?<\/table>/gi);
|
|
33019
|
+
if (!mtch || mtch.length == 0)
|
|
33020
|
+
throw new Error("Invalid HTML: could not find <table>");
|
|
33021
|
+
if (mtch.length == 1)
|
|
33022
|
+
return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);
|
|
33023
|
+
var wb = utils2.book_new();
|
|
33024
|
+
mtch.forEach(function(s, idx) {
|
|
33025
|
+
utils2.book_append_sheet(wb, html_to_sheet(s, opts), "Sheet" + (idx + 1));
|
|
33026
|
+
});
|
|
33027
|
+
return wb;
|
|
32005
33028
|
}
|
|
32006
33029
|
function make_html_row(ws, r, R, o) {
|
|
32007
33030
|
var M = ws["!merges"] || [];
|
|
@@ -32031,15 +33054,18 @@
|
|
|
32031
33054
|
sp.rowspan = RS;
|
|
32032
33055
|
if (CS > 1)
|
|
32033
33056
|
sp.colspan = CS;
|
|
32034
|
-
sp.t = cell && cell.t || "z";
|
|
32035
33057
|
if (o.editable)
|
|
32036
33058
|
w = '<span contenteditable="true">' + w + "</span>";
|
|
32037
|
-
|
|
32038
|
-
|
|
32039
|
-
|
|
33059
|
+
else if (cell) {
|
|
33060
|
+
sp["data-t"] = cell && cell.t || "z";
|
|
33061
|
+
if (cell.v != null)
|
|
33062
|
+
sp["data-v"] = cell.v;
|
|
32040
33063
|
if (cell.z != null)
|
|
32041
|
-
sp
|
|
33064
|
+
sp["data-z"] = cell.z;
|
|
33065
|
+
if (cell.l && (cell.l.Target || "#").charAt(0) != "#")
|
|
33066
|
+
w = '<a href="' + cell.l.Target + '">' + w + "</a>";
|
|
32042
33067
|
}
|
|
33068
|
+
sp.id = (o.id || "sjs") + "-" + coord;
|
|
32043
33069
|
oo.push(writextag("td", w, sp));
|
|
32044
33070
|
}
|
|
32045
33071
|
var preamble = "<tr>";
|
|
@@ -32117,8 +33143,8 @@
|
|
|
32117
33143
|
var elt = elts[_C];
|
|
32118
33144
|
if (opts.display && is_dom_element_hidden(elt))
|
|
32119
33145
|
continue;
|
|
32120
|
-
var v = elt.hasAttribute("v") ? elt.getAttribute("v") : htmldecode(elt.innerHTML);
|
|
32121
|
-
var z = elt.getAttribute("z");
|
|
33146
|
+
var v = elt.hasAttribute("data-v") ? elt.getAttribute("data-v") : elt.hasAttribute("v") ? elt.getAttribute("v") : htmldecode(elt.innerHTML);
|
|
33147
|
+
var z = elt.getAttribute("data-z") || elt.getAttribute("z");
|
|
32122
33148
|
for (midx = 0; midx < merges.length; ++midx) {
|
|
32123
33149
|
var m = merges[midx];
|
|
32124
33150
|
if (m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) {
|
|
@@ -32130,7 +33156,7 @@
|
|
|
32130
33156
|
if ((RS = +elt.getAttribute("rowspan") || 1) > 1 || CS > 1)
|
|
32131
33157
|
merges.push({ s: { r: R + or_R, c: C + or_C }, e: { r: R + or_R + (RS || 1) - 1, c: C + or_C + (CS || 1) - 1 } });
|
|
32132
33158
|
var o = { t: "s", v };
|
|
32133
|
-
var _t = elt.getAttribute("t") || "";
|
|
33159
|
+
var _t = elt.getAttribute("data-t") || elt.getAttribute("t") || "";
|
|
32134
33160
|
if (v != null) {
|
|
32135
33161
|
if (v.length == 0)
|
|
32136
33162
|
o.t = _t || "z";
|
|
@@ -32150,6 +33176,17 @@
|
|
|
32150
33176
|
}
|
|
32151
33177
|
if (o.z === void 0 && z != null)
|
|
32152
33178
|
o.z = z;
|
|
33179
|
+
var l = "", Aelts = elt.getElementsByTagName("A");
|
|
33180
|
+
if (Aelts && Aelts.length) {
|
|
33181
|
+
for (var Aelti = 0; Aelti < Aelts.length; ++Aelti)
|
|
33182
|
+
if (Aelts[Aelti].hasAttribute("href")) {
|
|
33183
|
+
l = Aelts[Aelti].getAttribute("href");
|
|
33184
|
+
if (l.charAt(0) != "#")
|
|
33185
|
+
break;
|
|
33186
|
+
}
|
|
33187
|
+
}
|
|
33188
|
+
if (l && l.charAt(0) != "#")
|
|
33189
|
+
o.l = { Target: l };
|
|
32153
33190
|
if (opts.dense) {
|
|
32154
33191
|
if (!ws[R + or_R])
|
|
32155
33192
|
ws[R + or_R] = [];
|
|
@@ -32343,6 +33380,9 @@
|
|
|
32343
33380
|
C += colpeat - 1;
|
|
32344
33381
|
} else if (Rn[1] !== "/") {
|
|
32345
33382
|
++C;
|
|
33383
|
+
textp = "";
|
|
33384
|
+
textpidx = 0;
|
|
33385
|
+
textR = [];
|
|
32346
33386
|
colpeat = 1;
|
|
32347
33387
|
var rptR = rowpeat ? R + rowpeat - 1 : R;
|
|
32348
33388
|
if (C > range.e.c)
|
|
@@ -32413,6 +33453,11 @@
|
|
|
32413
33453
|
case "time":
|
|
32414
33454
|
q.t = "n";
|
|
32415
33455
|
q.v = parse_isodur(ctag["time-value"]) / 86400;
|
|
33456
|
+
if (opts.cellDates) {
|
|
33457
|
+
q.t = "d";
|
|
33458
|
+
q.v = numdate(q.v);
|
|
33459
|
+
}
|
|
33460
|
+
q.z = "HH:MM:SS";
|
|
32416
33461
|
break;
|
|
32417
33462
|
case "number":
|
|
32418
33463
|
q.t = "n";
|
|
@@ -32840,12 +33885,13 @@
|
|
|
32840
33885
|
atag = parsexmltag(Rn[0], false);
|
|
32841
33886
|
if (!atag.href)
|
|
32842
33887
|
break;
|
|
32843
|
-
atag.Target = atag.href;
|
|
33888
|
+
atag.Target = unescapexml(atag.href);
|
|
32844
33889
|
delete atag.href;
|
|
32845
33890
|
if (atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) {
|
|
32846
33891
|
_Ref = ods_to_csf_3D(atag.Target.slice(1));
|
|
32847
33892
|
atag.Target = "#" + _Ref[0] + "!" + _Ref[1];
|
|
32848
|
-
}
|
|
33893
|
+
} else if (atag.Target.match(/^\.\.[\\\/]/))
|
|
33894
|
+
atag.Target = atag.Target.slice(3);
|
|
32849
33895
|
}
|
|
32850
33896
|
break;
|
|
32851
33897
|
case "table-protection":
|
|
@@ -32886,13 +33932,12 @@
|
|
|
32886
33932
|
}();
|
|
32887
33933
|
function parse_ods(zip, opts) {
|
|
32888
33934
|
opts = opts || {};
|
|
32889
|
-
|
|
32890
|
-
if (ods)
|
|
33935
|
+
if (safegetzipfile(zip, "META-INF/manifest.xml"))
|
|
32891
33936
|
parse_manifest(getzipdata(zip, "META-INF/manifest.xml"), opts);
|
|
32892
33937
|
var content = getzipstr(zip, "content.xml");
|
|
32893
33938
|
if (!content)
|
|
32894
|
-
throw new Error("Missing content.xml in
|
|
32895
|
-
var wb = parse_content_xml(
|
|
33939
|
+
throw new Error("Missing content.xml in ODS / UOF file");
|
|
33940
|
+
var wb = parse_content_xml(utf8read(content), opts);
|
|
32896
33941
|
if (safegetzipfile(zip, "meta.xml"))
|
|
32897
33942
|
wb.Props = parse_core_props(getzipdata(zip, "meta.xml"));
|
|
32898
33943
|
return wb;
|
|
@@ -32901,6 +33946,16 @@
|
|
|
32901
33946
|
return parse_content_xml(data, opts);
|
|
32902
33947
|
}
|
|
32903
33948
|
var write_styles_ods = function() {
|
|
33949
|
+
var master_styles = [
|
|
33950
|
+
"<office:master-styles>",
|
|
33951
|
+
'<style:master-page style:name="mp1" style:page-layout-name="mp1">',
|
|
33952
|
+
"<style:header/>",
|
|
33953
|
+
'<style:header-left style:display="false"/>',
|
|
33954
|
+
"<style:footer/>",
|
|
33955
|
+
'<style:footer-left style:display="false"/>',
|
|
33956
|
+
"</style:master-page>",
|
|
33957
|
+
"</office:master-styles>"
|
|
33958
|
+
].join("");
|
|
32904
33959
|
var payload = "<office:document-styles " + wxt_helper({
|
|
32905
33960
|
"xmlns:office": "urn:oasis:names:tc:opendocument:xmlns:office:1.0",
|
|
32906
33961
|
"xmlns:table": "urn:oasis:names:tc:opendocument:xmlns:table:1.0",
|
|
@@ -32914,7 +33969,7 @@
|
|
|
32914
33969
|
"xmlns:svg": "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",
|
|
32915
33970
|
"xmlns:of": "urn:oasis:names:tc:opendocument:xmlns:of:1.2",
|
|
32916
33971
|
"office:version": "1.2"
|
|
32917
|
-
}) + "
|
|
33972
|
+
}) + ">" + master_styles + "</office:document-styles>";
|
|
32918
33973
|
return function wso() {
|
|
32919
33974
|
return XML_HEADER + payload;
|
|
32920
33975
|
};
|
|
@@ -32923,20 +33978,28 @@
|
|
|
32923
33978
|
var write_text_p = function(text) {
|
|
32924
33979
|
return escapexml(text).replace(/ +/g, function($$) {
|
|
32925
33980
|
return '<text:s text:c="' + $$.length + '"/>';
|
|
32926
|
-
}).replace(/\t/g, "<text:tab/>").replace(/\n/g, "
|
|
33981
|
+
}).replace(/\t/g, "<text:tab/>").replace(/\n/g, "</text:p><text:p>").replace(/^ /, "<text:s/>").replace(/ $/, "<text:s/>");
|
|
32927
33982
|
};
|
|
32928
33983
|
var null_cell_xml = " <table:table-cell />\n";
|
|
32929
33984
|
var covered_cell_xml = " <table:covered-table-cell/>\n";
|
|
32930
33985
|
var write_ws2 = function(ws, wb, i2) {
|
|
32931
33986
|
var o = [];
|
|
32932
33987
|
o.push(' <table:table table:name="' + escapexml(wb.SheetNames[i2]) + '" table:style-name="ta1">\n');
|
|
32933
|
-
var R = 0, C = 0, range = decode_range(ws["!ref"]);
|
|
33988
|
+
var R = 0, C = 0, range = decode_range(ws["!ref"] || "A1");
|
|
32934
33989
|
var marr = ws["!merges"] || [], mi = 0;
|
|
32935
33990
|
var dense = Array.isArray(ws);
|
|
32936
|
-
|
|
32937
|
-
|
|
33991
|
+
if (ws["!cols"]) {
|
|
33992
|
+
for (C = 0; C <= range.e.c; ++C)
|
|
33993
|
+
o.push(" <table:table-column" + (ws["!cols"][C] ? ' table:style-name="co' + ws["!cols"][C].ods + '"' : "") + "></table:table-column>\n");
|
|
33994
|
+
}
|
|
33995
|
+
var H = "", ROWS = ws["!rows"] || [];
|
|
33996
|
+
for (R = 0; R < range.s.r; ++R) {
|
|
33997
|
+
H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : "";
|
|
33998
|
+
o.push(" <table:table-row" + H + "></table:table-row>\n");
|
|
33999
|
+
}
|
|
32938
34000
|
for (; R <= range.e.r; ++R) {
|
|
32939
|
-
|
|
34001
|
+
H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : "";
|
|
34002
|
+
o.push(" <table:table-row" + H + ">\n");
|
|
32940
34003
|
for (C = 0; C < range.s.c; ++C)
|
|
32941
34004
|
o.push(null_cell_xml);
|
|
32942
34005
|
for (; C <= range.e.c; ++C) {
|
|
@@ -33005,7 +34068,9 @@
|
|
|
33005
34068
|
if (cell.l && cell.l.Target) {
|
|
33006
34069
|
var _tgt = cell.l.Target;
|
|
33007
34070
|
_tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;
|
|
33008
|
-
|
|
34071
|
+
if (_tgt.charAt(0) != "#" && !_tgt.match(/^\w+:/))
|
|
34072
|
+
_tgt = "../" + _tgt;
|
|
34073
|
+
text_p = writextag("text:a", text_p, { "xlink:href": _tgt.replace(/&/g, "&") });
|
|
33009
34074
|
}
|
|
33010
34075
|
o.push(" " + writextag("table:table-cell", writextag("text:p", text_p, {}), ct) + "\n");
|
|
33011
34076
|
}
|
|
@@ -33014,7 +34079,7 @@
|
|
|
33014
34079
|
o.push(" </table:table>\n");
|
|
33015
34080
|
return o.join("");
|
|
33016
34081
|
};
|
|
33017
|
-
var write_automatic_styles_ods = function(o) {
|
|
34082
|
+
var write_automatic_styles_ods = function(o, wb) {
|
|
33018
34083
|
o.push(" <office:automatic-styles>\n");
|
|
33019
34084
|
o.push(' <number:date-style style:name="N37" number:automatic-order="true">\n');
|
|
33020
34085
|
o.push(' <number:month number:style="long"/>\n');
|
|
@@ -33023,7 +34088,47 @@
|
|
|
33023
34088
|
o.push(" <number:text>/</number:text>\n");
|
|
33024
34089
|
o.push(" <number:year/>\n");
|
|
33025
34090
|
o.push(" </number:date-style>\n");
|
|
33026
|
-
|
|
34091
|
+
var cidx = 0;
|
|
34092
|
+
wb.SheetNames.map(function(n) {
|
|
34093
|
+
return wb.Sheets[n];
|
|
34094
|
+
}).forEach(function(ws) {
|
|
34095
|
+
if (!ws)
|
|
34096
|
+
return;
|
|
34097
|
+
if (ws["!cols"]) {
|
|
34098
|
+
for (var C = 0; C < ws["!cols"].length; ++C)
|
|
34099
|
+
if (ws["!cols"][C]) {
|
|
34100
|
+
var colobj = ws["!cols"][C];
|
|
34101
|
+
if (colobj.width == null && colobj.wpx == null && colobj.wch == null)
|
|
34102
|
+
continue;
|
|
34103
|
+
process_col(colobj);
|
|
34104
|
+
colobj.ods = cidx;
|
|
34105
|
+
var w = ws["!cols"][C].wpx + "px";
|
|
34106
|
+
o.push(' <style:style style:name="co' + cidx + '" style:family="table-column">\n');
|
|
34107
|
+
o.push(' <style:table-column-properties fo:break-before="auto" style:column-width="' + w + '"/>\n');
|
|
34108
|
+
o.push(" </style:style>\n");
|
|
34109
|
+
++cidx;
|
|
34110
|
+
}
|
|
34111
|
+
}
|
|
34112
|
+
});
|
|
34113
|
+
var ridx = 0;
|
|
34114
|
+
wb.SheetNames.map(function(n) {
|
|
34115
|
+
return wb.Sheets[n];
|
|
34116
|
+
}).forEach(function(ws) {
|
|
34117
|
+
if (!ws)
|
|
34118
|
+
return;
|
|
34119
|
+
if (ws["!rows"]) {
|
|
34120
|
+
for (var R = 0; R < ws["!rows"].length; ++R)
|
|
34121
|
+
if (ws["!rows"][R]) {
|
|
34122
|
+
ws["!rows"][R].ods = ridx;
|
|
34123
|
+
var h = ws["!rows"][R].hpx + "px";
|
|
34124
|
+
o.push(' <style:style style:name="ro' + ridx + '" style:family="table-row">\n');
|
|
34125
|
+
o.push(' <style:table-row-properties fo:break-before="auto" style:row-height="' + h + '"/>\n');
|
|
34126
|
+
o.push(" </style:style>\n");
|
|
34127
|
+
++ridx;
|
|
34128
|
+
}
|
|
34129
|
+
}
|
|
34130
|
+
});
|
|
34131
|
+
o.push(' <style:style style:name="ta1" style:family="table" style:master-page-name="mp1">\n');
|
|
33027
34132
|
o.push(' <style:table-properties table:display="true" style:writing-mode="lr-tb"/>\n');
|
|
33028
34133
|
o.push(" </style:style>\n");
|
|
33029
34134
|
o.push(' <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>\n');
|
|
@@ -33074,11 +34179,12 @@
|
|
|
33074
34179
|
"xmlns:config": "urn:oasis:names:tc:opendocument:xmlns:config:1.0",
|
|
33075
34180
|
"office:mimetype": "application/vnd.oasis.opendocument.spreadsheet"
|
|
33076
34181
|
});
|
|
33077
|
-
if (opts.bookType == "fods")
|
|
34182
|
+
if (opts.bookType == "fods") {
|
|
33078
34183
|
o.push("<office:document" + attr + fods + ">\n");
|
|
33079
|
-
|
|
34184
|
+
o.push(write_meta_ods().replace(/office:document-meta/g, "office:meta"));
|
|
34185
|
+
} else
|
|
33080
34186
|
o.push("<office:document-content" + attr + ">\n");
|
|
33081
|
-
write_automatic_styles_ods(o);
|
|
34187
|
+
write_automatic_styles_ods(o, wb);
|
|
33082
34188
|
o.push(" <office:body>\n");
|
|
33083
34189
|
o.push(" <office:spreadsheet>\n");
|
|
33084
34190
|
for (var i2 = 0; i2 != wb.SheetNames.length; ++i2)
|
|
@@ -33110,7 +34216,7 @@
|
|
|
33110
34216
|
manifest.push([f, "text/xml"]);
|
|
33111
34217
|
rdf.push([f, "StylesFile"]);
|
|
33112
34218
|
f = "meta.xml";
|
|
33113
|
-
zip_add_file(zip, f, write_meta_ods());
|
|
34219
|
+
zip_add_file(zip, f, XML_HEADER + write_meta_ods());
|
|
33114
34220
|
manifest.push([f, "text/xml"]);
|
|
33115
34221
|
rdf.push([f, "MetadataFile"]);
|
|
33116
34222
|
f = "manifest.rdf";
|
|
@@ -33143,6 +34249,7 @@
|
|
|
33143
34249
|
var write_txt_str = write_obj_str({ from_sheet: sheet_to_txt });
|
|
33144
34250
|
var write_dbf_buf = write_obj_str(typeof DBF !== "undefined" ? DBF : {});
|
|
33145
34251
|
var write_eth_str = write_obj_str(typeof ETH !== "undefined" ? ETH : {});
|
|
34252
|
+
var write_wk1_buf = write_obj_str(typeof WK_ !== "undefined" ? { from_sheet: WK_.sheet_to_wk1 } : {});
|
|
33146
34253
|
function fix_opts_func(defaults) {
|
|
33147
34254
|
return function fix_opts(opts) {
|
|
33148
34255
|
for (var i2 = 0; i2 != defaults.length; ++i2) {
|
|
@@ -33264,6 +34371,13 @@
|
|
|
33264
34371
|
return parse_ods(zip, opts);
|
|
33265
34372
|
if (safegetzipfile(zip, "Index/Document.iwa"))
|
|
33266
34373
|
throw new Error("Unsupported NUMBERS file");
|
|
34374
|
+
if (!safegetzipfile(zip, "[Content_Types].xml")) {
|
|
34375
|
+
if (safegetzipfile(zip, "index.xml.gz"))
|
|
34376
|
+
throw new Error("Unsupported NUMBERS 08 file");
|
|
34377
|
+
if (safegetzipfile(zip, "index.xml"))
|
|
34378
|
+
throw new Error("Unsupported NUMBERS 09 file");
|
|
34379
|
+
throw new Error("Unsupported ZIP file");
|
|
34380
|
+
}
|
|
33267
34381
|
var entries = zipentries(zip);
|
|
33268
34382
|
var dir = parse_ct(getzipstr(zip, "[Content_Types].xml"));
|
|
33269
34383
|
var xlsb = false;
|
|
@@ -33420,8 +34534,18 @@
|
|
|
33420
34534
|
SSF: SSF.get_table()
|
|
33421
34535
|
};
|
|
33422
34536
|
if (opts && opts.bookFiles) {
|
|
33423
|
-
|
|
33424
|
-
|
|
34537
|
+
if (zip.files) {
|
|
34538
|
+
out.keys = entries;
|
|
34539
|
+
out.files = zip.files;
|
|
34540
|
+
} else {
|
|
34541
|
+
out.keys = [];
|
|
34542
|
+
out.files = {};
|
|
34543
|
+
zip.FullPaths.forEach(function(p, idx) {
|
|
34544
|
+
p = p.replace(/^Root Entry[\/]/, "");
|
|
34545
|
+
out.keys.push(p);
|
|
34546
|
+
out.files[p] = zip.FileIndex[idx];
|
|
34547
|
+
});
|
|
34548
|
+
}
|
|
33425
34549
|
}
|
|
33426
34550
|
if (opts && opts.bookVBA) {
|
|
33427
34551
|
if (dir.vba.length > 0)
|
|
@@ -33690,10 +34814,10 @@
|
|
|
33690
34814
|
}
|
|
33691
34815
|
function readSync(data, opts) {
|
|
33692
34816
|
reset_cp();
|
|
34817
|
+
var o = opts || {};
|
|
33693
34818
|
if (typeof ArrayBuffer !== "undefined" && data instanceof ArrayBuffer)
|
|
33694
|
-
return readSync(new Uint8Array(data),
|
|
34819
|
+
return readSync(new Uint8Array(data), (o = dup(o), o.type = "array", o));
|
|
33695
34820
|
var d = data, n = [0, 0, 0, 0], str = false;
|
|
33696
|
-
var o = opts || {};
|
|
33697
34821
|
if (o.cellStyles) {
|
|
33698
34822
|
o.cellNF = true;
|
|
33699
34823
|
o.sheetStubs = true;
|
|
@@ -33728,12 +34852,14 @@
|
|
|
33728
34852
|
return read_cfb(CFB.read(d, o), o);
|
|
33729
34853
|
break;
|
|
33730
34854
|
case 9:
|
|
33731
|
-
if (n[1] <=
|
|
34855
|
+
if (n[1] <= 8)
|
|
33732
34856
|
return parse_xlscfb(d, o);
|
|
33733
34857
|
break;
|
|
33734
34858
|
case 60:
|
|
33735
34859
|
return parse_xlml(d, o);
|
|
33736
34860
|
case 73:
|
|
34861
|
+
if (n[1] === 73 && n[2] === 42 && n[3] === 0)
|
|
34862
|
+
throw new Error("TIFF Image File is not a spreadsheet");
|
|
33737
34863
|
if (n[1] === 68)
|
|
33738
34864
|
return read_wb_ID(d, o);
|
|
33739
34865
|
break;
|
|
@@ -33748,11 +34874,16 @@
|
|
|
33748
34874
|
case 255:
|
|
33749
34875
|
if (n[1] === 254) {
|
|
33750
34876
|
return read_utf16(d, o);
|
|
33751
|
-
}
|
|
34877
|
+
} else if (n[1] === 0 && n[2] === 2 && n[3] === 0)
|
|
34878
|
+
return WK_.to_workbook(d, o);
|
|
33752
34879
|
break;
|
|
33753
34880
|
case 0:
|
|
33754
|
-
if (n[1] === 0
|
|
33755
|
-
|
|
34881
|
+
if (n[1] === 0) {
|
|
34882
|
+
if (n[2] >= 2 && n[3] === 0)
|
|
34883
|
+
return WK_.to_workbook(d, o);
|
|
34884
|
+
if (n[2] === 0 && (n[3] === 8 || n[3] === 9))
|
|
34885
|
+
return WK_.to_workbook(d, o);
|
|
34886
|
+
}
|
|
33756
34887
|
break;
|
|
33757
34888
|
case 3:
|
|
33758
34889
|
case 131:
|
|
@@ -33767,6 +34898,10 @@
|
|
|
33767
34898
|
case 13:
|
|
33768
34899
|
case 32:
|
|
33769
34900
|
return read_plaintext_raw(d, o);
|
|
34901
|
+
case 137:
|
|
34902
|
+
if (n[1] === 80 && n[2] === 78 && n[3] === 71)
|
|
34903
|
+
throw new Error("PNG Image File is not a spreadsheet");
|
|
34904
|
+
break;
|
|
33770
34905
|
}
|
|
33771
34906
|
if (DBF.versions.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31)
|
|
33772
34907
|
return DBF.to_workbook(d, o);
|
|
@@ -33796,7 +34931,7 @@
|
|
|
33796
34931
|
return CFB.write(cfb, o);
|
|
33797
34932
|
}
|
|
33798
34933
|
function write_zip_type(wb, opts) {
|
|
33799
|
-
var o = opts || {};
|
|
34934
|
+
var o = dup(opts || {});
|
|
33800
34935
|
var z = write_zip(wb, o);
|
|
33801
34936
|
var oopts = {};
|
|
33802
34937
|
if (o.compression)
|
|
@@ -33897,7 +35032,7 @@
|
|
|
33897
35032
|
function writeSync(wb, opts) {
|
|
33898
35033
|
reset_cp();
|
|
33899
35034
|
check_wb(wb);
|
|
33900
|
-
var o = opts || {};
|
|
35035
|
+
var o = dup(opts || {});
|
|
33901
35036
|
if (o.cellStyles) {
|
|
33902
35037
|
o.cellNF = true;
|
|
33903
35038
|
o.sheetStubs = true;
|
|
@@ -33934,6 +35069,10 @@
|
|
|
33934
35069
|
return write_string_type(write_eth_str(wb, o), o);
|
|
33935
35070
|
case "fods":
|
|
33936
35071
|
return write_string_type(write_ods(wb, o), o);
|
|
35072
|
+
case "wk1":
|
|
35073
|
+
return write_binary_type(write_wk1_buf(wb, o), o);
|
|
35074
|
+
case "wk3":
|
|
35075
|
+
return write_binary_type(WK_.book_to_wk3(wb, o), o);
|
|
33937
35076
|
case "biff2":
|
|
33938
35077
|
if (!o.biff)
|
|
33939
35078
|
o.biff = 2;
|
|
@@ -34029,7 +35168,7 @@
|
|
|
34029
35168
|
break;
|
|
34030
35169
|
continue;
|
|
34031
35170
|
case "e":
|
|
34032
|
-
v = void 0;
|
|
35171
|
+
v = v == 0 ? null : void 0;
|
|
34033
35172
|
break;
|
|
34034
35173
|
case "s":
|
|
34035
35174
|
case "d":
|
|
@@ -34041,7 +35180,9 @@
|
|
|
34041
35180
|
}
|
|
34042
35181
|
if (hdr[C] != null) {
|
|
34043
35182
|
if (v == null) {
|
|
34044
|
-
if (
|
|
35183
|
+
if (val.t == "e" && v === null)
|
|
35184
|
+
row[hdr[C]] = null;
|
|
35185
|
+
else if (defval !== void 0)
|
|
34045
35186
|
row[hdr[C]] = defval;
|
|
34046
35187
|
else if (raw && v === null)
|
|
34047
35188
|
row[hdr[C]] = null;
|
|
@@ -34300,6 +35441,9 @@
|
|
|
34300
35441
|
v = datenum(v);
|
|
34301
35442
|
}
|
|
34302
35443
|
z = o.dateNF || SSF._table[14];
|
|
35444
|
+
} else if (v === null && o.nullError) {
|
|
35445
|
+
t = "e";
|
|
35446
|
+
v = 0;
|
|
34303
35447
|
}
|
|
34304
35448
|
if (!cell)
|
|
34305
35449
|
ws[ref] = cell = { t, v };
|
|
@@ -34471,7 +35615,12 @@
|
|
|
34471
35615
|
})(utils2);
|
|
34472
35616
|
if (has_buf && typeof __require != "undefined")
|
|
34473
35617
|
(function() {
|
|
34474
|
-
var
|
|
35618
|
+
var strmod = require_stream();
|
|
35619
|
+
if (!strmod)
|
|
35620
|
+
return;
|
|
35621
|
+
var Readable = strmod.Readable;
|
|
35622
|
+
if (!Readable)
|
|
35623
|
+
return;
|
|
34475
35624
|
var write_csv_stream = function(sheet, opts) {
|
|
34476
35625
|
var stream = Readable();
|
|
34477
35626
|
var o = opts == null ? {} : opts;
|
|
@@ -34642,18 +35791,23 @@
|
|
|
34642
35791
|
else if (typeof module !== "undefined" && module.exports)
|
|
34643
35792
|
make_xlsx_lib(module.exports);
|
|
34644
35793
|
else if (typeof define === "function" && define.amd)
|
|
34645
|
-
define(function() {
|
|
35794
|
+
define("xlsx", function() {
|
|
34646
35795
|
if (!XLSX.version)
|
|
34647
35796
|
make_xlsx_lib(XLSX);
|
|
34648
35797
|
return XLSX;
|
|
34649
35798
|
});
|
|
34650
35799
|
else
|
|
34651
35800
|
make_xlsx_lib(XLSX);
|
|
35801
|
+
if (typeof window !== "undefined" && !window.XLSX)
|
|
35802
|
+
try {
|
|
35803
|
+
window.XLSX = XLSX;
|
|
35804
|
+
} catch (e) {
|
|
35805
|
+
}
|
|
34652
35806
|
}
|
|
34653
35807
|
});
|
|
34654
35808
|
|
|
34655
35809
|
// src/lib/parse-excel.ts
|
|
34656
|
-
|
|
35810
|
+
function parseExcel(arrayBuffer, options) {
|
|
34657
35811
|
const dataUrl = "dummy";
|
|
34658
35812
|
const workbook = (0, import_xlsx.read)(arrayBuffer, {
|
|
34659
35813
|
type: "array"
|
|
@@ -34685,19 +35839,20 @@
|
|
|
34685
35839
|
var src_exports = {};
|
|
34686
35840
|
__export(src_exports, {
|
|
34687
35841
|
ExcelLoader: () => ExcelLoader2,
|
|
34688
|
-
ExcelWorkerLoader: () => ExcelLoader
|
|
34689
|
-
_typecheckLoader: () => _typecheckLoader
|
|
35842
|
+
ExcelWorkerLoader: () => ExcelLoader
|
|
34690
35843
|
});
|
|
34691
|
-
var ExcelLoader2
|
|
35844
|
+
var ExcelLoader2;
|
|
34692
35845
|
var init_src = __esm({
|
|
34693
35846
|
"src/index.ts"() {
|
|
34694
35847
|
init_excel_loader();
|
|
34695
35848
|
init_parse_excel();
|
|
34696
35849
|
ExcelLoader2 = {
|
|
34697
35850
|
...ExcelLoader,
|
|
34698
|
-
parse
|
|
35851
|
+
async parse(arrayBuffer, options) {
|
|
35852
|
+
const data = parseExcel(arrayBuffer, options);
|
|
35853
|
+
return { shape: "object-row-table", data };
|
|
35854
|
+
}
|
|
34699
35855
|
};
|
|
34700
|
-
_typecheckLoader = ExcelLoader2;
|
|
34701
35856
|
}
|
|
34702
35857
|
});
|
|
34703
35858
|
|
|
@@ -34711,4 +35866,6 @@
|
|
|
34711
35866
|
});
|
|
34712
35867
|
require_bundle();
|
|
34713
35868
|
})();
|
|
35869
|
+
/*! cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
|
35870
|
+
/*! cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
|
34714
35871
|
/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
|