@loaders.gl/excel 4.0.0-alpha.4 → 4.0.0-alpha.6
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.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +35871 -0
- 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 +14 -0
- package/dist/excel-loader.d.ts.map +1 -0
- package/dist/excel-loader.js +29 -18
- package/dist/excel-worker.js +1502 -311
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -7
- package/dist/lib/encode-excel.d.ts +80 -0
- package/dist/lib/encode-excel.d.ts.map +1 -0
- package/dist/lib/encode-excel.js +80 -1
- package/dist/lib/parse-excel.d.ts +10 -0
- package/dist/lib/parse-excel.d.ts.map +1 -0
- package/dist/lib/parse-excel.js +44 -29
- package/dist/workers/excel-worker.d.ts +2 -0
- package/dist/workers/excel-worker.d.ts.map +1 -0
- package/dist/workers/excel-worker.js +5 -4
- package/package.json +9 -9
- 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/excel-worker.js
CHANGED
|
@@ -28,10 +28,22 @@
|
|
|
28
28
|
return __reExport(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? { get: () => module.default, enumerable: true } : { value: module, enumerable: true })), module);
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
// (disabled):fs
|
|
32
|
+
var require_fs = __commonJS({
|
|
33
|
+
"(disabled):fs"() {
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// (disabled):stream
|
|
38
|
+
var require_stream = __commonJS({
|
|
39
|
+
"(disabled):stream"() {
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
31
43
|
// ../../node_modules/xlsx/dist/cpexcel.js
|
|
32
44
|
var require_cpexcel = __commonJS({
|
|
33
45
|
"../../node_modules/xlsx/dist/cpexcel.js"(exports, module) {
|
|
34
|
-
var cptable2 = { version: "1.
|
|
46
|
+
var cptable2 = { version: "1.15.0" };
|
|
35
47
|
cptable2[437] = function() {
|
|
36
48
|
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 = {};
|
|
37
49
|
for (var i = 0; i != d.length; ++i) {
|
|
@@ -3094,6 +3106,15 @@
|
|
|
3094
3106
|
}
|
|
3095
3107
|
return { "enc": e, "dec": D };
|
|
3096
3108
|
}();
|
|
3109
|
+
cptable2[28591] = function() {
|
|
3110
|
+
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 = {};
|
|
3111
|
+
for (var i = 0; i != d.length; ++i) {
|
|
3112
|
+
if (d.charCodeAt(i) !== 65533)
|
|
3113
|
+
e[d.charAt(i)] = i;
|
|
3114
|
+
D[i] = d.charAt(i);
|
|
3115
|
+
}
|
|
3116
|
+
return { "enc": e, "dec": D };
|
|
3117
|
+
}();
|
|
3097
3118
|
if (typeof module !== "undefined" && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === "undefined")
|
|
3098
3119
|
module.exports = cptable2;
|
|
3099
3120
|
(function(root, factory) {
|
|
@@ -3843,12 +3864,6 @@
|
|
|
3843
3864
|
}
|
|
3844
3865
|
});
|
|
3845
3866
|
|
|
3846
|
-
// (disabled):fs
|
|
3847
|
-
var require_fs = __commonJS({
|
|
3848
|
-
"(disabled):fs"() {
|
|
3849
|
-
}
|
|
3850
|
-
});
|
|
3851
|
-
|
|
3852
3867
|
// ../../node_modules/xlsx/jszip.js
|
|
3853
3868
|
var require_jszip = __commonJS({
|
|
3854
3869
|
"../../node_modules/xlsx/jszip.js"(exports, module) {
|
|
@@ -3857,7 +3872,7 @@
|
|
|
3857
3872
|
module.exports = e();
|
|
3858
3873
|
else if (typeof define == "function" && define.amd && typeof DO_NOT_EXPORT_JSZIP == "undefined") {
|
|
3859
3874
|
JSZipSync = e();
|
|
3860
|
-
define([], e);
|
|
3875
|
+
define("j", [], e);
|
|
3861
3876
|
} else {
|
|
3862
3877
|
var f;
|
|
3863
3878
|
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();
|
|
@@ -9496,18 +9511,12 @@
|
|
|
9496
9511
|
}
|
|
9497
9512
|
});
|
|
9498
9513
|
|
|
9499
|
-
// (disabled):stream
|
|
9500
|
-
var require_stream = __commonJS({
|
|
9501
|
-
"(disabled):stream"() {
|
|
9502
|
-
}
|
|
9503
|
-
});
|
|
9504
|
-
|
|
9505
9514
|
// ../../node_modules/xlsx/xlsx.js
|
|
9506
9515
|
var require_xlsx = __commonJS({
|
|
9507
9516
|
"../../node_modules/xlsx/xlsx.js"(exports, module) {
|
|
9508
9517
|
var XLSX = {};
|
|
9509
9518
|
function make_xlsx_lib(XLSX2) {
|
|
9510
|
-
XLSX2.version = "0.17.
|
|
9519
|
+
XLSX2.version = "0.17.5";
|
|
9511
9520
|
var current_codepage = 1200, current_ansi = 1252;
|
|
9512
9521
|
if (typeof module !== "undefined" && typeof __require !== "undefined") {
|
|
9513
9522
|
if (typeof cptable === "undefined") {
|
|
@@ -11668,7 +11677,8 @@
|
|
|
11668
11677
|
break;
|
|
11669
11678
|
fat_addrs.push(q2);
|
|
11670
11679
|
}
|
|
11671
|
-
|
|
11680
|
+
if (cnt >= 1)
|
|
11681
|
+
sleuth_fat(__readInt32LE(sector, ssz - 4), cnt - 1, sectors, ssz, fat_addrs);
|
|
11672
11682
|
}
|
|
11673
11683
|
}
|
|
11674
11684
|
function get_sector_list(sectors, start, fat_addrs, ssz, chkd) {
|
|
@@ -13022,8 +13032,10 @@
|
|
|
13022
13032
|
}
|
|
13023
13033
|
function fuzzynum(s) {
|
|
13024
13034
|
var v = Number(s);
|
|
13025
|
-
if (
|
|
13035
|
+
if (isFinite(v))
|
|
13026
13036
|
return v;
|
|
13037
|
+
if (!isNaN(v))
|
|
13038
|
+
return NaN;
|
|
13027
13039
|
if (!/\d/.test(s))
|
|
13028
13040
|
return v;
|
|
13029
13041
|
var wt = 1;
|
|
@@ -13104,11 +13116,11 @@
|
|
|
13104
13116
|
}
|
|
13105
13117
|
function safegetzipfile(zip, file) {
|
|
13106
13118
|
var k = zip.FullPaths || keys(zip.files);
|
|
13107
|
-
var f = file.toLowerCase(), g = f.replace(
|
|
13119
|
+
var f = file.toLowerCase().replace(/[\/]/g, "\\"), g = f.replace(/\\/g, "/");
|
|
13108
13120
|
for (var i2 = 0; i2 < k.length; ++i2) {
|
|
13109
|
-
var n = k[i2].toLowerCase();
|
|
13121
|
+
var n = k[i2].replace(/^Root Entry[\/]/, "").toLowerCase();
|
|
13110
13122
|
if (f == n || g == n)
|
|
13111
|
-
return zip.files[k[i2]];
|
|
13123
|
+
return zip.files ? zip.files[k[i2]] : zip.FileIndex[i2];
|
|
13112
13124
|
}
|
|
13113
13125
|
return null;
|
|
13114
13126
|
}
|
|
@@ -14033,7 +14045,7 @@
|
|
|
14033
14045
|
for (cntbyte = 1; cntbyte < 4 && tmpbyte & 128; ++cntbyte)
|
|
14034
14046
|
length += ((tmpbyte = data.read_shift(1)) & 127) << 7 * cntbyte;
|
|
14035
14047
|
tgt = data.l + length;
|
|
14036
|
-
var d =
|
|
14048
|
+
var d = R.f && R.f(data, length, opts);
|
|
14037
14049
|
data.l = tgt;
|
|
14038
14050
|
if (cb(d, R.n, RT))
|
|
14039
14051
|
return;
|
|
@@ -14294,11 +14306,12 @@
|
|
|
14294
14306
|
idx = 10 * idx + cc;
|
|
14295
14307
|
}
|
|
14296
14308
|
o.s.r = --idx;
|
|
14297
|
-
if (i2 === len ||
|
|
14309
|
+
if (i2 === len || cc != 10) {
|
|
14298
14310
|
o.e.c = o.s.c;
|
|
14299
14311
|
o.e.r = o.s.r;
|
|
14300
14312
|
return o;
|
|
14301
14313
|
}
|
|
14314
|
+
++i2;
|
|
14302
14315
|
for (idx = 0; i2 != len; ++i2) {
|
|
14303
14316
|
if ((cc = range.charCodeAt(i2) - 64) < 1 || cc > 26)
|
|
14304
14317
|
break;
|
|
@@ -14333,6 +14346,8 @@
|
|
|
14333
14346
|
return cell.w;
|
|
14334
14347
|
if (cell.t == "d" && !cell.z && o && o.dateNF)
|
|
14335
14348
|
cell.z = o.dateNF;
|
|
14349
|
+
if (cell.t == "e")
|
|
14350
|
+
return BErr[cell.v] || cell.v;
|
|
14336
14351
|
if (v == void 0)
|
|
14337
14352
|
return safe_format_cell(cell, cell.v);
|
|
14338
14353
|
return safe_format_cell(cell, v);
|
|
@@ -14399,7 +14414,10 @@
|
|
|
14399
14414
|
if (cell.v === null) {
|
|
14400
14415
|
if (cell.f)
|
|
14401
14416
|
cell.t = "n";
|
|
14402
|
-
else if (
|
|
14417
|
+
else if (o.nullError) {
|
|
14418
|
+
cell.t = "e";
|
|
14419
|
+
cell.v = 0;
|
|
14420
|
+
} else if (!o.sheetStubs)
|
|
14403
14421
|
continue;
|
|
14404
14422
|
else
|
|
14405
14423
|
cell.t = "z";
|
|
@@ -14526,6 +14544,19 @@
|
|
|
14526
14544
|
o.write_shift(1, 0);
|
|
14527
14545
|
return o;
|
|
14528
14546
|
}
|
|
14547
|
+
function parse_XLSBShortCell(data) {
|
|
14548
|
+
var iStyleRef = data.read_shift(2);
|
|
14549
|
+
iStyleRef += data.read_shift(1) << 16;
|
|
14550
|
+
data.l++;
|
|
14551
|
+
return { c: -1, iStyleRef };
|
|
14552
|
+
}
|
|
14553
|
+
function write_XLSBShortCell(cell, o) {
|
|
14554
|
+
if (o == null)
|
|
14555
|
+
o = new_buf(4);
|
|
14556
|
+
o.write_shift(3, cell.iStyleRef || cell.s);
|
|
14557
|
+
o.write_shift(1, 0);
|
|
14558
|
+
return o;
|
|
14559
|
+
}
|
|
14529
14560
|
var parse_XLSBCodeName = parse_XLWideString;
|
|
14530
14561
|
var write_XLSBCodeName = write_XLWideString;
|
|
14531
14562
|
function parse_XLNullableWideString(data) {
|
|
@@ -14749,7 +14780,10 @@
|
|
|
14749
14780
|
27: { n: "ContentStatus", t: VT_STRING },
|
|
14750
14781
|
28: { n: "Language", t: VT_STRING },
|
|
14751
14782
|
29: { n: "Version", t: VT_STRING },
|
|
14752
|
-
255: {}
|
|
14783
|
+
255: {},
|
|
14784
|
+
2147483648: { n: "Locale", t: VT_UI4 },
|
|
14785
|
+
2147483651: { n: "Behavior", t: VT_UI4 },
|
|
14786
|
+
1919054434: {}
|
|
14753
14787
|
};
|
|
14754
14788
|
var SummaryPIDSI = {
|
|
14755
14789
|
1: { n: "CodePage", t: VT_I2 },
|
|
@@ -14771,18 +14805,11 @@
|
|
|
14771
14805
|
17: { n: "Thumbnail", t: VT_CF },
|
|
14772
14806
|
18: { n: "Application", t: VT_STRING },
|
|
14773
14807
|
19: { n: "DocSecurity", t: VT_I4 },
|
|
14774
|
-
255: {}
|
|
14775
|
-
};
|
|
14776
|
-
var SpecialProperties = {
|
|
14808
|
+
255: {},
|
|
14777
14809
|
2147483648: { n: "Locale", t: VT_UI4 },
|
|
14778
14810
|
2147483651: { n: "Behavior", t: VT_UI4 },
|
|
14779
14811
|
1919054434: {}
|
|
14780
14812
|
};
|
|
14781
|
-
(function() {
|
|
14782
|
-
for (var y in SpecialProperties)
|
|
14783
|
-
if (Object.prototype.hasOwnProperty.call(SpecialProperties, y))
|
|
14784
|
-
DocSummaryPIDDSI[y] = SummaryPIDSI[y] = SpecialProperties[y];
|
|
14785
|
-
})();
|
|
14786
14813
|
var DocSummaryRE = evert_key(DocSummaryPIDDSI, "n");
|
|
14787
14814
|
var SummaryRE = evert_key(SummaryPIDSI, "n");
|
|
14788
14815
|
var CountryEnum = {
|
|
@@ -15239,7 +15266,8 @@
|
|
|
15239
15266
|
rel.Type = y.Type;
|
|
15240
15267
|
rel.Target = y.Target;
|
|
15241
15268
|
rel.Id = y.Id;
|
|
15242
|
-
|
|
15269
|
+
if (y.TargetMode)
|
|
15270
|
+
rel.TargetMode = y.TargetMode;
|
|
15243
15271
|
var canonictarget = y.TargetMode === "External" ? y.Target : resolve_path(y.Target, currentFilePath);
|
|
15244
15272
|
rels[canonictarget] = rel;
|
|
15245
15273
|
hash[y.Id] = rel;
|
|
@@ -15344,7 +15372,7 @@
|
|
|
15344
15372
|
return o.join("");
|
|
15345
15373
|
}
|
|
15346
15374
|
var write_meta_ods = function() {
|
|
15347
|
-
var payload = '
|
|
15375
|
+
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>";
|
|
15348
15376
|
return function wmo() {
|
|
15349
15377
|
return payload;
|
|
15350
15378
|
};
|
|
@@ -15812,6 +15840,17 @@
|
|
|
15812
15840
|
throw new Error("VtUnalignedString must have positive length");
|
|
15813
15841
|
return parse_VtStringBase(blob, t, 0);
|
|
15814
15842
|
}
|
|
15843
|
+
function parse_VtVecLpwstrValue(blob) {
|
|
15844
|
+
var length = blob.read_shift(4);
|
|
15845
|
+
var ret = [];
|
|
15846
|
+
for (var i2 = 0; i2 != length; ++i2) {
|
|
15847
|
+
var start = blob.l;
|
|
15848
|
+
ret[i2] = blob.read_shift(0, "lpwstr").replace(chr0, "");
|
|
15849
|
+
if (blob.l - start & 2)
|
|
15850
|
+
blob.l += 2;
|
|
15851
|
+
}
|
|
15852
|
+
return ret;
|
|
15853
|
+
}
|
|
15815
15854
|
function parse_VtVecUnalignedLpstrValue(blob) {
|
|
15816
15855
|
var length = blob.read_shift(4);
|
|
15817
15856
|
var ret = [];
|
|
@@ -15819,24 +15858,21 @@
|
|
|
15819
15858
|
ret[i2] = blob.read_shift(0, "lpstr-cp").replace(chr0, "");
|
|
15820
15859
|
return ret;
|
|
15821
15860
|
}
|
|
15822
|
-
function parse_VtVecUnalignedLpstr(blob) {
|
|
15823
|
-
return parse_VtVecUnalignedLpstrValue(blob);
|
|
15824
|
-
}
|
|
15825
15861
|
function parse_VtHeadingPair(blob) {
|
|
15862
|
+
var start = blob.l;
|
|
15826
15863
|
var headingString = parse_TypedPropertyValue(blob, VT_USTR);
|
|
15864
|
+
if (blob[blob.l] == 0 && blob[blob.l + 1] == 0 && blob.l - start & 2)
|
|
15865
|
+
blob.l += 2;
|
|
15827
15866
|
var headerParts = parse_TypedPropertyValue(blob, VT_I4);
|
|
15828
15867
|
return [headingString, headerParts];
|
|
15829
15868
|
}
|
|
15830
15869
|
function parse_VtVecHeadingPairValue(blob) {
|
|
15831
15870
|
var cElements = blob.read_shift(4);
|
|
15832
15871
|
var out = [];
|
|
15833
|
-
for (var i2 = 0; i2
|
|
15872
|
+
for (var i2 = 0; i2 < cElements / 2; ++i2)
|
|
15834
15873
|
out.push(parse_VtHeadingPair(blob));
|
|
15835
15874
|
return out;
|
|
15836
15875
|
}
|
|
15837
|
-
function parse_VtVecHeadingPair(blob) {
|
|
15838
|
-
return parse_VtVecHeadingPairValue(blob);
|
|
15839
|
-
}
|
|
15840
15876
|
function parse_dictionary(blob, CodePage) {
|
|
15841
15877
|
var cnt = blob.read_shift(4);
|
|
15842
15878
|
var dict = {};
|
|
@@ -15869,7 +15905,7 @@
|
|
|
15869
15905
|
var t = blob.read_shift(2), ret, opts = _opts || {};
|
|
15870
15906
|
blob.l += 2;
|
|
15871
15907
|
if (type !== VT_VARIANT) {
|
|
15872
|
-
if (t !== type && VT_CUSTOM.indexOf(type) === -1)
|
|
15908
|
+
if (t !== type && VT_CUSTOM.indexOf(type) === -1 && !((type & 65534) == 4126 && (t & 65534) == 4126))
|
|
15873
15909
|
throw new Error("Expected type " + type + " saw " + t);
|
|
15874
15910
|
}
|
|
15875
15911
|
switch (type === VT_VARIANT ? t : type) {
|
|
@@ -15901,9 +15937,10 @@
|
|
|
15901
15937
|
case 81:
|
|
15902
15938
|
return parse_VtUnalignedString(blob, t).replace(chr0, "");
|
|
15903
15939
|
case 4108:
|
|
15904
|
-
return
|
|
15940
|
+
return parse_VtVecHeadingPairValue(blob);
|
|
15905
15941
|
case 4126:
|
|
15906
|
-
|
|
15942
|
+
case 4127:
|
|
15943
|
+
return t == 4127 ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);
|
|
15907
15944
|
default:
|
|
15908
15945
|
throw new Error("TypedPropertyValue unrecognized type " + type + " " + t);
|
|
15909
15946
|
}
|
|
@@ -16279,7 +16316,7 @@
|
|
|
16279
16316
|
function write_Bes(v, t, o) {
|
|
16280
16317
|
if (!o)
|
|
16281
16318
|
o = new_buf(2);
|
|
16282
|
-
o.write_shift(1, +v);
|
|
16319
|
+
o.write_shift(1, t == "e" ? +v : +!!v);
|
|
16283
16320
|
o.write_shift(1, t == "e" ? 1 : 0);
|
|
16284
16321
|
return o;
|
|
16285
16322
|
}
|
|
@@ -16405,19 +16442,22 @@
|
|
|
16405
16442
|
return url;
|
|
16406
16443
|
}
|
|
16407
16444
|
function parse_FileMoniker(blob) {
|
|
16408
|
-
blob.
|
|
16445
|
+
var cAnti = blob.read_shift(2);
|
|
16446
|
+
var preamble = "";
|
|
16447
|
+
while (cAnti-- > 0)
|
|
16448
|
+
preamble += "../";
|
|
16409
16449
|
var ansiPath = blob.read_shift(0, "lpstr-ansi");
|
|
16410
16450
|
blob.l += 2;
|
|
16411
16451
|
if (blob.read_shift(2) != 57005)
|
|
16412
16452
|
throw new Error("Bad FileMoniker");
|
|
16413
16453
|
var sz = blob.read_shift(4);
|
|
16414
16454
|
if (sz === 0)
|
|
16415
|
-
return ansiPath.replace(/\\/g, "/");
|
|
16455
|
+
return preamble + ansiPath.replace(/\\/g, "/");
|
|
16416
16456
|
var bytes = blob.read_shift(4);
|
|
16417
16457
|
if (blob.read_shift(2) != 3)
|
|
16418
16458
|
throw new Error("Bad FileMoniker");
|
|
16419
16459
|
var unicodePath = blob.read_shift(bytes >> 1, "utf16le").replace(chr0, "");
|
|
16420
|
-
return unicodePath;
|
|
16460
|
+
return preamble + unicodePath;
|
|
16421
16461
|
}
|
|
16422
16462
|
function parse_HyperlinkMoniker(blob, length) {
|
|
16423
16463
|
var clsid = blob.read_shift(16);
|
|
@@ -16436,6 +16476,15 @@
|
|
|
16436
16476
|
var o = len > 0 ? blob.read_shift(len, "utf16le").replace(chr0, "") : "";
|
|
16437
16477
|
return o;
|
|
16438
16478
|
}
|
|
16479
|
+
function write_HyperlinkString(str, o) {
|
|
16480
|
+
if (!o)
|
|
16481
|
+
o = new_buf(6 + str.length * 2);
|
|
16482
|
+
o.write_shift(4, 1 + str.length);
|
|
16483
|
+
for (var i2 = 0; i2 < str.length; ++i2)
|
|
16484
|
+
o.write_shift(2, str.charCodeAt(i2));
|
|
16485
|
+
o.write_shift(2, 0);
|
|
16486
|
+
return o;
|
|
16487
|
+
}
|
|
16439
16488
|
function parse_Hyperlink(blob, length) {
|
|
16440
16489
|
var end = blob.l + length;
|
|
16441
16490
|
var sVer = blob.read_shift(4);
|
|
@@ -16464,6 +16513,8 @@
|
|
|
16464
16513
|
target += "#" + Loc;
|
|
16465
16514
|
if (!target)
|
|
16466
16515
|
target = "#" + Loc;
|
|
16516
|
+
if (flags & 2 && target.charAt(0) == "/" && target.charAt(1) != "/")
|
|
16517
|
+
target = "file://" + target;
|
|
16467
16518
|
var out = { Target: target };
|
|
16468
16519
|
if (guid)
|
|
16469
16520
|
out.guid = guid;
|
|
@@ -16476,7 +16527,10 @@
|
|
|
16476
16527
|
function write_Hyperlink(hl) {
|
|
16477
16528
|
var out = new_buf(512), i2 = 0;
|
|
16478
16529
|
var Target = hl.Target;
|
|
16479
|
-
|
|
16530
|
+
if (Target.slice(0, 7) == "file://")
|
|
16531
|
+
Target = Target.slice(7);
|
|
16532
|
+
var hashidx = Target.indexOf("#");
|
|
16533
|
+
var F = hashidx > -1 ? 31 : 23;
|
|
16480
16534
|
switch (Target.charAt(0)) {
|
|
16481
16535
|
case "#":
|
|
16482
16536
|
F = 28;
|
|
@@ -16492,18 +16546,18 @@
|
|
|
16492
16546
|
out.write_shift(4, data[i2]);
|
|
16493
16547
|
if (F == 28) {
|
|
16494
16548
|
Target = Target.slice(1);
|
|
16495
|
-
|
|
16496
|
-
for (i2 = 0; i2 < Target.length; ++i2)
|
|
16497
|
-
out.write_shift(2, Target.charCodeAt(i2));
|
|
16498
|
-
out.write_shift(2, 0);
|
|
16549
|
+
write_HyperlinkString(Target, out);
|
|
16499
16550
|
} else if (F & 2) {
|
|
16500
16551
|
data = "e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" ");
|
|
16501
16552
|
for (i2 = 0; i2 < data.length; ++i2)
|
|
16502
16553
|
out.write_shift(1, parseInt(data[i2], 16));
|
|
16503
|
-
|
|
16504
|
-
|
|
16505
|
-
|
|
16554
|
+
var Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;
|
|
16555
|
+
out.write_shift(4, 2 * (Pretarget.length + 1));
|
|
16556
|
+
for (i2 = 0; i2 < Pretarget.length; ++i2)
|
|
16557
|
+
out.write_shift(2, Pretarget.charCodeAt(i2));
|
|
16506
16558
|
out.write_shift(2, 0);
|
|
16559
|
+
if (F & 8)
|
|
16560
|
+
write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx + 1) : "", out);
|
|
16507
16561
|
} else {
|
|
16508
16562
|
data = "03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" ");
|
|
16509
16563
|
for (i2 = 0; i2 < data.length; ++i2)
|
|
@@ -16512,9 +16566,9 @@
|
|
|
16512
16566
|
while (Target.slice(P * 3, P * 3 + 3) == "../" || Target.slice(P * 3, P * 3 + 3) == "..\\")
|
|
16513
16567
|
++P;
|
|
16514
16568
|
out.write_shift(2, P);
|
|
16515
|
-
out.write_shift(4, Target.length + 1);
|
|
16516
|
-
for (i2 = 0; i2 < Target.length; ++i2)
|
|
16517
|
-
out.write_shift(1, Target.charCodeAt(i2) & 255);
|
|
16569
|
+
out.write_shift(4, Target.length - 3 * P + 1);
|
|
16570
|
+
for (i2 = 0; i2 < Target.length - 3 * P; ++i2)
|
|
16571
|
+
out.write_shift(1, Target.charCodeAt(i2 + 3 * P) & 255);
|
|
16518
16572
|
out.write_shift(1, 0);
|
|
16519
16573
|
out.write_shift(2, 65535);
|
|
16520
16574
|
out.write_shift(2, 57005);
|
|
@@ -16761,7 +16815,7 @@
|
|
|
16761
16815
|
}
|
|
16762
16816
|
function parse_WsBool(blob, length, opts) {
|
|
16763
16817
|
var flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);
|
|
16764
|
-
return { fDialog: flags & 16 };
|
|
16818
|
+
return { fDialog: flags & 16, fBelow: flags & 64, fRight: flags & 128 };
|
|
16765
16819
|
}
|
|
16766
16820
|
function parse_BoundSheet8(blob, length, opts) {
|
|
16767
16821
|
var pos = blob.read_shift(4);
|
|
@@ -16964,6 +17018,8 @@
|
|
|
16964
17018
|
return o;
|
|
16965
17019
|
}
|
|
16966
17020
|
function parse_Label(blob, length, opts) {
|
|
17021
|
+
if (opts.biffguess && opts.biff == 2)
|
|
17022
|
+
opts.biff = 5;
|
|
16967
17023
|
var target = blob.l + length;
|
|
16968
17024
|
var cell = parse_XLSCell(blob, 6);
|
|
16969
17025
|
if (opts.biff == 2)
|
|
@@ -17110,7 +17166,10 @@
|
|
|
17110
17166
|
o.write_shift(2, data.numFmtId || 0);
|
|
17111
17167
|
o.write_shift(2, ixfeP << 4);
|
|
17112
17168
|
}
|
|
17113
|
-
|
|
17169
|
+
var f = 0;
|
|
17170
|
+
if (data.numFmtId > 0 && b5)
|
|
17171
|
+
f |= 1024;
|
|
17172
|
+
o.write_shift(4, f);
|
|
17114
17173
|
o.write_shift(4, 0);
|
|
17115
17174
|
if (!b5)
|
|
17116
17175
|
o.write_shift(4, 0);
|
|
@@ -17137,7 +17196,7 @@
|
|
|
17137
17196
|
}
|
|
17138
17197
|
function parse_BoolErr(blob, length, opts) {
|
|
17139
17198
|
var cell = parse_XLSCell(blob, 6);
|
|
17140
|
-
if (opts.biff == 2)
|
|
17199
|
+
if (opts.biff == 2 || length == 9)
|
|
17141
17200
|
++blob.l;
|
|
17142
17201
|
var val = parse_Bes(blob, 2);
|
|
17143
17202
|
cell.val = val;
|
|
@@ -17150,7 +17209,9 @@
|
|
|
17150
17209
|
write_Bes(v, t, o);
|
|
17151
17210
|
return o;
|
|
17152
17211
|
}
|
|
17153
|
-
function parse_Number(blob) {
|
|
17212
|
+
function parse_Number(blob, length, opts) {
|
|
17213
|
+
if (opts.biffguess && opts.biff == 2)
|
|
17214
|
+
opts.biff = 5;
|
|
17154
17215
|
var cell = parse_XLSCell(blob, 6);
|
|
17155
17216
|
var xnum = parse_Xnum(blob, 8);
|
|
17156
17217
|
cell.val = xnum;
|
|
@@ -17495,6 +17556,21 @@
|
|
|
17495
17556
|
o.level = flags >> 8 & 7;
|
|
17496
17557
|
return o;
|
|
17497
17558
|
}
|
|
17559
|
+
function write_ColInfo(col, idx) {
|
|
17560
|
+
var o = new_buf(12);
|
|
17561
|
+
o.write_shift(2, idx);
|
|
17562
|
+
o.write_shift(2, idx);
|
|
17563
|
+
o.write_shift(2, col.width * 256);
|
|
17564
|
+
o.write_shift(2, 0);
|
|
17565
|
+
var f = 0;
|
|
17566
|
+
if (col.hidden)
|
|
17567
|
+
f |= 1;
|
|
17568
|
+
o.write_shift(1, f);
|
|
17569
|
+
f = col.level || 0;
|
|
17570
|
+
o.write_shift(1, f);
|
|
17571
|
+
o.write_shift(2, 0);
|
|
17572
|
+
return o;
|
|
17573
|
+
}
|
|
17498
17574
|
function parse_Setup(blob, length) {
|
|
17499
17575
|
var o = {};
|
|
17500
17576
|
if (length < 32)
|
|
@@ -17535,6 +17611,8 @@
|
|
|
17535
17611
|
return o;
|
|
17536
17612
|
}
|
|
17537
17613
|
function parse_BIFF2STR(blob, length, opts) {
|
|
17614
|
+
if (opts.biffguess && opts.biff == 5)
|
|
17615
|
+
opts.biff = 2;
|
|
17538
17616
|
var cell = parse_XLSCell(blob, 6);
|
|
17539
17617
|
++blob.l;
|
|
17540
17618
|
var str = parse_XLUnicodeString2(blob, length - 7, opts);
|
|
@@ -17661,6 +17739,11 @@
|
|
|
17661
17739
|
87: 1252,
|
|
17662
17740
|
88: 1252,
|
|
17663
17741
|
89: 1252,
|
|
17742
|
+
108: 863,
|
|
17743
|
+
134: 737,
|
|
17744
|
+
135: 852,
|
|
17745
|
+
136: 857,
|
|
17746
|
+
204: 1257,
|
|
17664
17747
|
255: 16969
|
|
17665
17748
|
};
|
|
17666
17749
|
var dbf_reverse_map = evert({
|
|
@@ -17710,10 +17793,11 @@
|
|
|
17710
17793
|
}
|
|
17711
17794
|
prep_blob(d, 0);
|
|
17712
17795
|
var ft = d.read_shift(1);
|
|
17713
|
-
var memo =
|
|
17796
|
+
var memo = !!(ft & 136);
|
|
17714
17797
|
var vfp = false, l7 = false;
|
|
17715
17798
|
switch (ft) {
|
|
17716
17799
|
case 2:
|
|
17800
|
+
break;
|
|
17717
17801
|
case 3:
|
|
17718
17802
|
break;
|
|
17719
17803
|
case 48:
|
|
@@ -17722,24 +17806,21 @@
|
|
|
17722
17806
|
break;
|
|
17723
17807
|
case 49:
|
|
17724
17808
|
vfp = true;
|
|
17809
|
+
memo = true;
|
|
17725
17810
|
break;
|
|
17726
17811
|
case 131:
|
|
17727
|
-
memo = true;
|
|
17728
17812
|
break;
|
|
17729
17813
|
case 139:
|
|
17730
|
-
memo = true;
|
|
17731
17814
|
break;
|
|
17732
17815
|
case 140:
|
|
17733
|
-
memo = true;
|
|
17734
17816
|
l7 = true;
|
|
17735
17817
|
break;
|
|
17736
17818
|
case 245:
|
|
17737
|
-
memo = true;
|
|
17738
17819
|
break;
|
|
17739
17820
|
default:
|
|
17740
17821
|
throw new Error("DBF Unsupported Version: " + ft.toString(16));
|
|
17741
17822
|
}
|
|
17742
|
-
var nrow = 0, fpos =
|
|
17823
|
+
var nrow = 0, fpos = 521;
|
|
17743
17824
|
if (ft == 2)
|
|
17744
17825
|
nrow = d.read_shift(2);
|
|
17745
17826
|
d.l += 3;
|
|
@@ -17750,7 +17831,7 @@
|
|
|
17750
17831
|
if (ft != 2)
|
|
17751
17832
|
fpos = d.read_shift(2);
|
|
17752
17833
|
var rlen = d.read_shift(2);
|
|
17753
|
-
var current_cp = 1252;
|
|
17834
|
+
var current_cp = opts.codepage || 1252;
|
|
17754
17835
|
if (ft != 2) {
|
|
17755
17836
|
d.l += 16;
|
|
17756
17837
|
d.read_shift(1);
|
|
@@ -17762,8 +17843,9 @@
|
|
|
17762
17843
|
if (l7)
|
|
17763
17844
|
d.l += 36;
|
|
17764
17845
|
var fields = [], field = {};
|
|
17765
|
-
var hend = fpos - 10 - (vfp ? 264 : 0)
|
|
17766
|
-
|
|
17846
|
+
var hend = Math.min(d.length, ft == 2 ? 521 : fpos - 10 - (vfp ? 264 : 0));
|
|
17847
|
+
var ww = l7 ? 32 : 11;
|
|
17848
|
+
while (d.l < hend && d[d.l] != 13) {
|
|
17767
17849
|
field = {};
|
|
17768
17850
|
field.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l + ww)).replace(/[\u0000\r\n].*$/g, "");
|
|
17769
17851
|
d.l += ww;
|
|
@@ -17788,6 +17870,9 @@
|
|
|
17788
17870
|
if (opts.WTF)
|
|
17789
17871
|
console.log("Skipping " + field.name + ":" + field.type);
|
|
17790
17872
|
break;
|
|
17873
|
+
case "+":
|
|
17874
|
+
case "0":
|
|
17875
|
+
case "@":
|
|
17791
17876
|
case "C":
|
|
17792
17877
|
case "D":
|
|
17793
17878
|
case "F":
|
|
@@ -17798,9 +17883,6 @@
|
|
|
17798
17883
|
case "O":
|
|
17799
17884
|
case "T":
|
|
17800
17885
|
case "Y":
|
|
17801
|
-
case "0":
|
|
17802
|
-
case "@":
|
|
17803
|
-
case "+":
|
|
17804
17886
|
break;
|
|
17805
17887
|
default:
|
|
17806
17888
|
throw new Error("Unknown Field Type: " + field.type);
|
|
@@ -17808,13 +17890,9 @@
|
|
|
17808
17890
|
}
|
|
17809
17891
|
if (d[d.l] !== 13)
|
|
17810
17892
|
d.l = fpos - 1;
|
|
17811
|
-
|
|
17812
|
-
d.l
|
|
17813
|
-
|
|
17814
|
-
if (d.read_shift(1) !== 13)
|
|
17815
|
-
throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]);
|
|
17816
|
-
d.l = fpos;
|
|
17817
|
-
}
|
|
17893
|
+
if (d.read_shift(1) !== 13)
|
|
17894
|
+
throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]);
|
|
17895
|
+
d.l = fpos;
|
|
17818
17896
|
var R = 0, C = 0;
|
|
17819
17897
|
out[0] = [];
|
|
17820
17898
|
for (C = 0; C != fields.length; ++C)
|
|
@@ -17834,8 +17912,8 @@
|
|
|
17834
17912
|
var s = cptable.utils.decode(current_cp, dd);
|
|
17835
17913
|
switch (fields[C].type) {
|
|
17836
17914
|
case "C":
|
|
17837
|
-
|
|
17838
|
-
|
|
17915
|
+
if (s.trim().length)
|
|
17916
|
+
out[R][C] = s.replace(/\s+$/, "");
|
|
17839
17917
|
break;
|
|
17840
17918
|
case "D":
|
|
17841
17919
|
if (s.length === 8)
|
|
@@ -17851,7 +17929,7 @@
|
|
|
17851
17929
|
out[R][C] = l7 ? dd.read_shift(-4, "i") ^ 2147483648 : dd.read_shift(4, "i");
|
|
17852
17930
|
break;
|
|
17853
17931
|
case "L":
|
|
17854
|
-
switch (s.toUpperCase()) {
|
|
17932
|
+
switch (s.trim().toUpperCase()) {
|
|
17855
17933
|
case "Y":
|
|
17856
17934
|
case "T":
|
|
17857
17935
|
out[R][C] = true;
|
|
@@ -17860,9 +17938,8 @@
|
|
|
17860
17938
|
case "F":
|
|
17861
17939
|
out[R][C] = false;
|
|
17862
17940
|
break;
|
|
17863
|
-
case "
|
|
17941
|
+
case "":
|
|
17864
17942
|
case "?":
|
|
17865
|
-
out[R][C] = false;
|
|
17866
17943
|
break;
|
|
17867
17944
|
default:
|
|
17868
17945
|
throw new Error("DBF Unrecognized L:|" + s + "|");
|
|
@@ -17874,7 +17951,9 @@
|
|
|
17874
17951
|
out[R][C] = "##MEMO##" + (l7 ? parseInt(s.trim(), 10) : dd.read_shift(4));
|
|
17875
17952
|
break;
|
|
17876
17953
|
case "N":
|
|
17877
|
-
|
|
17954
|
+
s = s.replace(/\u0000/g, "").trim();
|
|
17955
|
+
if (s && s != ".")
|
|
17956
|
+
out[R][C] = +s || 0;
|
|
17878
17957
|
break;
|
|
17879
17958
|
case "@":
|
|
17880
17959
|
out[R][C] = new Date(dd.read_shift(-8, "f") - 621356832e5);
|
|
@@ -18122,7 +18201,7 @@
|
|
|
18122
18201
|
S: 169,
|
|
18123
18202
|
c: 170,
|
|
18124
18203
|
R: 174,
|
|
18125
|
-
B: 180,
|
|
18204
|
+
"B ": 180,
|
|
18126
18205
|
0: 176,
|
|
18127
18206
|
1: 177,
|
|
18128
18207
|
2: 178,
|
|
@@ -18169,7 +18248,7 @@
|
|
|
18169
18248
|
case "binary":
|
|
18170
18249
|
return sylk_to_aoa_str(d, opts);
|
|
18171
18250
|
case "buffer":
|
|
18172
|
-
return sylk_to_aoa_str(d.toString("binary"), opts);
|
|
18251
|
+
return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d), opts);
|
|
18173
18252
|
case "array":
|
|
18174
18253
|
return sylk_to_aoa_str(cc2str(d), opts);
|
|
18175
18254
|
}
|
|
@@ -18200,14 +18279,18 @@
|
|
|
18200
18279
|
break;
|
|
18201
18280
|
case "O":
|
|
18202
18281
|
break;
|
|
18282
|
+
case "W":
|
|
18283
|
+
break;
|
|
18203
18284
|
case "P":
|
|
18204
18285
|
if (record[1].charAt(0) == "P")
|
|
18205
18286
|
formats.push(rstr.slice(3).replace(/;;/g, ";"));
|
|
18206
18287
|
break;
|
|
18207
18288
|
case "C":
|
|
18208
|
-
var C_seen_K = false, C_seen_X = false;
|
|
18289
|
+
var C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;
|
|
18209
18290
|
for (rj = 1; rj < record.length; ++rj)
|
|
18210
18291
|
switch (record[rj].charAt(0)) {
|
|
18292
|
+
case "A":
|
|
18293
|
+
break;
|
|
18211
18294
|
case "X":
|
|
18212
18295
|
C = parseInt(record[rj].slice(1)) - 1;
|
|
18213
18296
|
C_seen_X = true;
|
|
@@ -18239,17 +18322,41 @@
|
|
|
18239
18322
|
C_seen_K = true;
|
|
18240
18323
|
break;
|
|
18241
18324
|
case "E":
|
|
18325
|
+
C_seen_E = true;
|
|
18242
18326
|
var formula = rc_to_a1(record[rj].slice(1), { r: R, c: C });
|
|
18243
18327
|
arr[R][C] = [arr[R][C], formula];
|
|
18244
18328
|
break;
|
|
18329
|
+
case "S":
|
|
18330
|
+
C_seen_S = true;
|
|
18331
|
+
arr[R][C] = [arr[R][C], "S5S"];
|
|
18332
|
+
break;
|
|
18333
|
+
case "G":
|
|
18334
|
+
break;
|
|
18335
|
+
case "R":
|
|
18336
|
+
_R = parseInt(record[rj].slice(1)) - 1;
|
|
18337
|
+
break;
|
|
18338
|
+
case "C":
|
|
18339
|
+
_C = parseInt(record[rj].slice(1)) - 1;
|
|
18340
|
+
break;
|
|
18245
18341
|
default:
|
|
18246
18342
|
if (opts && opts.WTF)
|
|
18247
18343
|
throw new Error("SYLK bad record " + rstr);
|
|
18248
18344
|
}
|
|
18249
18345
|
if (C_seen_K) {
|
|
18250
|
-
arr[R][C]
|
|
18346
|
+
if (arr[R][C] && arr[R][C].length == 2)
|
|
18347
|
+
arr[R][C][0] = val;
|
|
18348
|
+
else
|
|
18349
|
+
arr[R][C] = val;
|
|
18251
18350
|
next_cell_format = null;
|
|
18252
18351
|
}
|
|
18352
|
+
if (C_seen_S) {
|
|
18353
|
+
if (C_seen_E)
|
|
18354
|
+
throw new Error("SYLK shared formula cannot have own formula");
|
|
18355
|
+
var shrbase = _R > -1 && arr[_R][_C];
|
|
18356
|
+
if (!shrbase || !shrbase[1])
|
|
18357
|
+
throw new Error("SYLK shared formula cannot find base");
|
|
18358
|
+
arr[R][C][1] = shift_formula_str(shrbase[1], { r: R - _R, c: C - _C });
|
|
18359
|
+
}
|
|
18253
18360
|
break;
|
|
18254
18361
|
case "F":
|
|
18255
18362
|
var F_seen = 0;
|
|
@@ -18364,9 +18471,9 @@
|
|
|
18364
18471
|
if (col.hidden)
|
|
18365
18472
|
rec += "0";
|
|
18366
18473
|
else {
|
|
18367
|
-
if (typeof col.width == "number")
|
|
18474
|
+
if (typeof col.width == "number" && !col.wpx)
|
|
18368
18475
|
col.wpx = width2px(col.width);
|
|
18369
|
-
if (typeof col.wpx == "number")
|
|
18476
|
+
if (typeof col.wpx == "number" && !col.wch)
|
|
18370
18477
|
col.wch = px2char(col.wpx);
|
|
18371
18478
|
if (typeof col.wch == "number")
|
|
18372
18479
|
rec += Math.round(col.wch);
|
|
@@ -18425,7 +18532,7 @@
|
|
|
18425
18532
|
case "binary":
|
|
18426
18533
|
return dif_to_aoa_str(d, opts);
|
|
18427
18534
|
case "buffer":
|
|
18428
|
-
return dif_to_aoa_str(d.toString("binary"), opts);
|
|
18535
|
+
return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d), opts);
|
|
18429
18536
|
case "array":
|
|
18430
18537
|
return dif_to_aoa_str(cc2str(d), opts);
|
|
18431
18538
|
}
|
|
@@ -18444,7 +18551,10 @@
|
|
|
18444
18551
|
var metadata = records[ri].trim().split(",");
|
|
18445
18552
|
var type = metadata[0], value = metadata[1];
|
|
18446
18553
|
++ri;
|
|
18447
|
-
var data = records[ri]
|
|
18554
|
+
var data = records[ri] || "";
|
|
18555
|
+
while ((data.match(/["]/g) || []).length & 1 && ri < records.length - 1)
|
|
18556
|
+
data += "\n" + records[++ri];
|
|
18557
|
+
data = data.trim();
|
|
18448
18558
|
switch (+type) {
|
|
18449
18559
|
case -1:
|
|
18450
18560
|
if (data === "BOT") {
|
|
@@ -18469,6 +18579,9 @@
|
|
|
18469
18579
|
break;
|
|
18470
18580
|
case 1:
|
|
18471
18581
|
data = data.slice(1, data.length - 1);
|
|
18582
|
+
data = data.replace(/""/g, '"');
|
|
18583
|
+
if (DIF_XL && data && data.match(/^=".*"$/))
|
|
18584
|
+
data = data.slice(2, -1);
|
|
18472
18585
|
arr[R][C++] = data !== "" ? data : null;
|
|
18473
18586
|
break;
|
|
18474
18587
|
}
|
|
@@ -18688,12 +18801,12 @@
|
|
|
18688
18801
|
function set_text_arr(data, arr, R, C, o) {
|
|
18689
18802
|
if (o.raw)
|
|
18690
18803
|
arr[R][C] = data;
|
|
18691
|
-
else if (data === "
|
|
18804
|
+
else if (data === "") {
|
|
18805
|
+
} else if (data === "TRUE")
|
|
18692
18806
|
arr[R][C] = true;
|
|
18693
18807
|
else if (data === "FALSE")
|
|
18694
18808
|
arr[R][C] = false;
|
|
18695
|
-
else if (data
|
|
18696
|
-
} else if (!isNaN(fuzzynum(data)))
|
|
18809
|
+
else if (!isNaN(fuzzynum(data)))
|
|
18697
18810
|
arr[R][C] = fuzzynum(data);
|
|
18698
18811
|
else if (!isNaN(fuzzydate(data).getDate()))
|
|
18699
18812
|
arr[R][C] = parseDate(data);
|
|
@@ -18733,12 +18846,14 @@
|
|
|
18733
18846
|
var guess_seps = {
|
|
18734
18847
|
44: ",",
|
|
18735
18848
|
9: " ",
|
|
18736
|
-
59: ";"
|
|
18849
|
+
59: ";",
|
|
18850
|
+
124: "|"
|
|
18737
18851
|
};
|
|
18738
18852
|
var guess_sep_weights = {
|
|
18739
18853
|
44: 3,
|
|
18740
18854
|
9: 2,
|
|
18741
|
-
59: 1
|
|
18855
|
+
59: 1,
|
|
18856
|
+
124: 0
|
|
18742
18857
|
};
|
|
18743
18858
|
function guess_sep(str) {
|
|
18744
18859
|
var cnt = {}, instr = false, end = 0, cc = 0;
|
|
@@ -18763,7 +18878,7 @@
|
|
|
18763
18878
|
cc.sort(function(a, b) {
|
|
18764
18879
|
return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]];
|
|
18765
18880
|
});
|
|
18766
|
-
return guess_seps[cc.pop()[1]];
|
|
18881
|
+
return guess_seps[cc.pop()[1]] || 44;
|
|
18767
18882
|
}
|
|
18768
18883
|
function dsv_to_sheet_str(str, opts) {
|
|
18769
18884
|
var o = opts || {};
|
|
@@ -18779,11 +18894,14 @@
|
|
|
18779
18894
|
} else if (str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10) {
|
|
18780
18895
|
sep = str.charAt(4);
|
|
18781
18896
|
str = str.slice(6);
|
|
18782
|
-
}
|
|
18783
|
-
|
|
18897
|
+
} else
|
|
18898
|
+
sep = guess_sep(str.slice(0, 1024));
|
|
18899
|
+
} else if (o && o.FS)
|
|
18900
|
+
sep = o.FS;
|
|
18901
|
+
else
|
|
18784
18902
|
sep = guess_sep(str.slice(0, 1024));
|
|
18785
18903
|
var R = 0, C = 0, v = 0;
|
|
18786
|
-
var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc = 0;
|
|
18904
|
+
var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc = 0, startcc = str.charCodeAt(0);
|
|
18787
18905
|
str = str.replace(/\r\n/mg, "\n");
|
|
18788
18906
|
var _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null;
|
|
18789
18907
|
function finish_cell() {
|
|
@@ -18851,6 +18969,7 @@
|
|
|
18851
18969
|
} else
|
|
18852
18970
|
ws[encode_cell({ c: C, r: R })] = cell;
|
|
18853
18971
|
start = end + 1;
|
|
18972
|
+
startcc = str.charCodeAt(start);
|
|
18854
18973
|
if (range.e.c < C)
|
|
18855
18974
|
range.e.c = C;
|
|
18856
18975
|
if (range.e.r < R)
|
|
@@ -18868,7 +18987,8 @@
|
|
|
18868
18987
|
for (; end < str.length; ++end)
|
|
18869
18988
|
switch (cc = str.charCodeAt(end)) {
|
|
18870
18989
|
case 34:
|
|
18871
|
-
|
|
18990
|
+
if (startcc === 34)
|
|
18991
|
+
instr = !instr;
|
|
18872
18992
|
break;
|
|
18873
18993
|
case sepcc:
|
|
18874
18994
|
case 10:
|
|
@@ -18887,6 +19007,8 @@
|
|
|
18887
19007
|
function prn_to_sheet_str(str, opts) {
|
|
18888
19008
|
if (!(opts && opts.PRN))
|
|
18889
19009
|
return dsv_to_sheet_str(str, opts);
|
|
19010
|
+
if (opts.FS)
|
|
19011
|
+
return dsv_to_sheet_str(str, opts);
|
|
18890
19012
|
if (str.slice(0, 4) == "sep=")
|
|
18891
19013
|
return dsv_to_sheet_str(str, opts);
|
|
18892
19014
|
if (str.indexOf(" ") >= 0 || str.indexOf(",") >= 0 || str.indexOf(";") >= 0)
|
|
@@ -18908,7 +19030,7 @@
|
|
|
18908
19030
|
else if (opts.codepage && typeof cptable !== "undefined")
|
|
18909
19031
|
str = cptable.utils.decode(opts.codepage, d);
|
|
18910
19032
|
else
|
|
18911
|
-
str = d.toString("binary");
|
|
19033
|
+
str = has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d);
|
|
18912
19034
|
break;
|
|
18913
19035
|
case "array":
|
|
18914
19036
|
str = cc2str(d);
|
|
@@ -18921,8 +19043,10 @@
|
|
|
18921
19043
|
}
|
|
18922
19044
|
if (bytes[0] == 239 && bytes[1] == 187 && bytes[2] == 191)
|
|
18923
19045
|
str = utf8read(str.slice(3));
|
|
19046
|
+
else if (opts.type != "string" && opts.codepage == 65001)
|
|
19047
|
+
str = utf8read(str);
|
|
18924
19048
|
else if (opts.type == "binary" && typeof cptable !== "undefined" && opts.codepage)
|
|
18925
|
-
str = cptable.utils.decode(opts.codepage, cptable.utils.encode(
|
|
19049
|
+
str = cptable.utils.decode(opts.codepage, cptable.utils.encode(28591, str));
|
|
18926
19050
|
if (str.slice(0, 19) == "socialcalc:version:")
|
|
18927
19051
|
return ETH.to_sheet(opts.type == "string" ? str : utf8read(str), opts);
|
|
18928
19052
|
return prn_to_sheet_str(str, opts);
|
|
@@ -18980,12 +19104,12 @@
|
|
|
18980
19104
|
var Enum = opts.Enum || WK1Enum;
|
|
18981
19105
|
while (data.l < data.length) {
|
|
18982
19106
|
var RT = data.read_shift(2);
|
|
18983
|
-
var R = Enum[RT] || Enum[
|
|
19107
|
+
var R = Enum[RT] || Enum[65535];
|
|
18984
19108
|
var length = data.read_shift(2);
|
|
18985
19109
|
var tgt = data.l + length;
|
|
18986
|
-
var d =
|
|
19110
|
+
var d = R.f && R.f(data, length, opts);
|
|
18987
19111
|
data.l = tgt;
|
|
18988
|
-
if (cb(d, R
|
|
19112
|
+
if (cb(d, R, RT))
|
|
18989
19113
|
return;
|
|
18990
19114
|
}
|
|
18991
19115
|
}
|
|
@@ -19007,22 +19131,19 @@
|
|
|
19007
19131
|
var o = opts || {};
|
|
19008
19132
|
if (DENSE != null && o.dense == null)
|
|
19009
19133
|
o.dense = DENSE;
|
|
19010
|
-
var s = o.dense ? [] : {}, n = "Sheet1", sidx = 0;
|
|
19011
|
-
var sheets = {}, snames = [
|
|
19134
|
+
var s = o.dense ? [] : {}, n = "Sheet1", next_n = "", sidx = 0;
|
|
19135
|
+
var sheets = {}, snames = [], realnames = [];
|
|
19012
19136
|
var refguess = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
19013
19137
|
var sheetRows = o.sheetRows || 0;
|
|
19014
|
-
if (d[2] ==
|
|
19138
|
+
if (d[2] == 0) {
|
|
19139
|
+
if (d[3] == 8 || d[3] == 9) {
|
|
19140
|
+
if (d.length >= 16 && d[14] == 5 && d[15] === 108)
|
|
19141
|
+
throw new Error("Unsupported Works 3 for Mac file");
|
|
19142
|
+
}
|
|
19143
|
+
}
|
|
19144
|
+
if (d[2] == 2) {
|
|
19015
19145
|
o.Enum = WK1Enum;
|
|
19016
|
-
|
|
19017
|
-
o.Enum = WK3Enum;
|
|
19018
|
-
else if (d[2] == 14) {
|
|
19019
|
-
o.Enum = WK3Enum;
|
|
19020
|
-
o.qpro = true;
|
|
19021
|
-
d.l = 0;
|
|
19022
|
-
} else
|
|
19023
|
-
throw new Error("Unrecognized LOTUS BOF " + d[2]);
|
|
19024
|
-
lotushopper(d, function(val, Rn, RT) {
|
|
19025
|
-
if (d[2] == 2)
|
|
19146
|
+
lotushopper(d, function(val, R, RT) {
|
|
19026
19147
|
switch (RT) {
|
|
19027
19148
|
case 0:
|
|
19028
19149
|
o.vers = val;
|
|
@@ -19032,13 +19153,20 @@
|
|
|
19032
19153
|
case 6:
|
|
19033
19154
|
refguess = val;
|
|
19034
19155
|
break;
|
|
19156
|
+
case 204:
|
|
19157
|
+
if (val)
|
|
19158
|
+
next_n = val;
|
|
19159
|
+
break;
|
|
19160
|
+
case 222:
|
|
19161
|
+
next_n = val;
|
|
19162
|
+
break;
|
|
19035
19163
|
case 15:
|
|
19164
|
+
case 51:
|
|
19036
19165
|
if (!o.qpro)
|
|
19037
19166
|
val[1].v = val[1].v.slice(1);
|
|
19038
19167
|
case 13:
|
|
19039
19168
|
case 14:
|
|
19040
19169
|
case 16:
|
|
19041
|
-
case 51:
|
|
19042
19170
|
if (RT == 14 && (val[2] & 112) == 112 && (val[2] & 15) > 1 && (val[2] & 15) < 15) {
|
|
19043
19171
|
val[1].z = o.dateNF || SSF._table[14];
|
|
19044
19172
|
if (o.cellDates) {
|
|
@@ -19046,6 +19174,28 @@
|
|
|
19046
19174
|
val[1].v = numdate(val[1].v);
|
|
19047
19175
|
}
|
|
19048
19176
|
}
|
|
19177
|
+
if (o.qpro) {
|
|
19178
|
+
if (val[3] > sidx) {
|
|
19179
|
+
s["!ref"] = encode_range(refguess);
|
|
19180
|
+
sheets[n] = s;
|
|
19181
|
+
snames.push(n);
|
|
19182
|
+
s = o.dense ? [] : {};
|
|
19183
|
+
refguess = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
19184
|
+
sidx = val[3];
|
|
19185
|
+
n = next_n || "Sheet" + (sidx + 1);
|
|
19186
|
+
next_n = "";
|
|
19187
|
+
}
|
|
19188
|
+
}
|
|
19189
|
+
var tmpcell = o.dense ? (s[val[0].r] || [])[val[0].c] : s[encode_cell(val[0])];
|
|
19190
|
+
if (tmpcell) {
|
|
19191
|
+
tmpcell.t = val[1].t;
|
|
19192
|
+
tmpcell.v = val[1].v;
|
|
19193
|
+
if (val[1].z != null)
|
|
19194
|
+
tmpcell.z = val[1].z;
|
|
19195
|
+
if (val[1].f != null)
|
|
19196
|
+
tmpcell.f = val[1].f;
|
|
19197
|
+
break;
|
|
19198
|
+
}
|
|
19049
19199
|
if (o.dense) {
|
|
19050
19200
|
if (!s[val[0].r])
|
|
19051
19201
|
s[val[0].r] = [];
|
|
@@ -19053,9 +19203,20 @@
|
|
|
19053
19203
|
} else
|
|
19054
19204
|
s[encode_cell(val[0])] = val[1];
|
|
19055
19205
|
break;
|
|
19206
|
+
default:
|
|
19056
19207
|
}
|
|
19057
|
-
|
|
19208
|
+
}, o);
|
|
19209
|
+
} else if (d[2] == 26 || d[2] == 14) {
|
|
19210
|
+
o.Enum = WK3Enum;
|
|
19211
|
+
if (d[2] == 14) {
|
|
19212
|
+
o.qpro = true;
|
|
19213
|
+
d.l = 0;
|
|
19214
|
+
}
|
|
19215
|
+
lotushopper(d, function(val, R, RT) {
|
|
19058
19216
|
switch (RT) {
|
|
19217
|
+
case 204:
|
|
19218
|
+
n = val;
|
|
19219
|
+
break;
|
|
19059
19220
|
case 22:
|
|
19060
19221
|
val[1].v = val[1].v.slice(1);
|
|
19061
19222
|
case 23:
|
|
@@ -19067,11 +19228,11 @@
|
|
|
19067
19228
|
if (val[3] > sidx) {
|
|
19068
19229
|
s["!ref"] = encode_range(refguess);
|
|
19069
19230
|
sheets[n] = s;
|
|
19231
|
+
snames.push(n);
|
|
19070
19232
|
s = o.dense ? [] : {};
|
|
19071
19233
|
refguess = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
19072
19234
|
sidx = val[3];
|
|
19073
19235
|
n = "Sheet" + (sidx + 1);
|
|
19074
|
-
snames.push(n);
|
|
19075
19236
|
}
|
|
19076
19237
|
if (sheetRows > 0 && val[0].r >= sheetRows)
|
|
19077
19238
|
break;
|
|
@@ -19086,29 +19247,187 @@
|
|
|
19086
19247
|
if (refguess.e.r < val[0].r)
|
|
19087
19248
|
refguess.e.r = val[0].r;
|
|
19088
19249
|
break;
|
|
19250
|
+
case 27:
|
|
19251
|
+
if (val[14e3])
|
|
19252
|
+
realnames[val[14e3][0]] = val[14e3][1];
|
|
19253
|
+
break;
|
|
19254
|
+
case 1537:
|
|
19255
|
+
realnames[val[0]] = val[1];
|
|
19256
|
+
if (val[0] == sidx)
|
|
19257
|
+
n = val[1];
|
|
19258
|
+
break;
|
|
19089
19259
|
default:
|
|
19090
19260
|
break;
|
|
19091
19261
|
}
|
|
19092
|
-
|
|
19262
|
+
}, o);
|
|
19263
|
+
} else
|
|
19264
|
+
throw new Error("Unrecognized LOTUS BOF " + d[2]);
|
|
19093
19265
|
s["!ref"] = encode_range(refguess);
|
|
19094
|
-
sheets[n] = s;
|
|
19095
|
-
|
|
19266
|
+
sheets[next_n || n] = s;
|
|
19267
|
+
snames.push(next_n || n);
|
|
19268
|
+
if (!realnames.length)
|
|
19269
|
+
return { SheetNames: snames, Sheets: sheets };
|
|
19270
|
+
var osheets = {}, rnames = [];
|
|
19271
|
+
for (var i2 = 0; i2 < realnames.length; ++i2)
|
|
19272
|
+
if (sheets[snames[i2]]) {
|
|
19273
|
+
rnames.push(realnames[i2] || snames[i2]);
|
|
19274
|
+
osheets[realnames[i2]] = sheets[realnames[i2]] || sheets[snames[i2]];
|
|
19275
|
+
} else {
|
|
19276
|
+
rnames.push(realnames[i2]);
|
|
19277
|
+
osheets[realnames[i2]] = { "!ref": "A1" };
|
|
19278
|
+
}
|
|
19279
|
+
return { SheetNames: rnames, Sheets: osheets };
|
|
19280
|
+
}
|
|
19281
|
+
function sheet_to_wk1(ws, opts) {
|
|
19282
|
+
var o = opts || {};
|
|
19283
|
+
if (+o.codepage >= 0)
|
|
19284
|
+
set_cp(+o.codepage);
|
|
19285
|
+
if (o.type == "string")
|
|
19286
|
+
throw new Error("Cannot write WK1 to JS string");
|
|
19287
|
+
var ba = buf_array();
|
|
19288
|
+
var range = safe_decode_range(ws["!ref"]);
|
|
19289
|
+
var dense = Array.isArray(ws);
|
|
19290
|
+
var cols = [];
|
|
19291
|
+
write_biff_rec(ba, 0, write_BOF_WK1(1030));
|
|
19292
|
+
write_biff_rec(ba, 6, write_RANGE(range));
|
|
19293
|
+
var max_R = Math.min(range.e.r, 8191);
|
|
19294
|
+
for (var R = range.s.r; R <= max_R; ++R) {
|
|
19295
|
+
var rr = encode_row(R);
|
|
19296
|
+
for (var C = range.s.c; C <= range.e.c; ++C) {
|
|
19297
|
+
if (R === range.s.r)
|
|
19298
|
+
cols[C] = encode_col(C);
|
|
19299
|
+
var ref = cols[C] + rr;
|
|
19300
|
+
var cell = dense ? (ws[R] || [])[C] : ws[ref];
|
|
19301
|
+
if (!cell || cell.t == "z")
|
|
19302
|
+
continue;
|
|
19303
|
+
if (cell.t == "n") {
|
|
19304
|
+
if ((cell.v | 0) == cell.v && cell.v >= -32768 && cell.v <= 32767)
|
|
19305
|
+
write_biff_rec(ba, 13, write_INTEGER(R, C, cell.v));
|
|
19306
|
+
else
|
|
19307
|
+
write_biff_rec(ba, 14, write_NUMBER(R, C, cell.v));
|
|
19308
|
+
} else {
|
|
19309
|
+
var str = format_cell(cell);
|
|
19310
|
+
write_biff_rec(ba, 15, write_LABEL(R, C, str.slice(0, 239)));
|
|
19311
|
+
}
|
|
19312
|
+
}
|
|
19313
|
+
}
|
|
19314
|
+
write_biff_rec(ba, 1);
|
|
19315
|
+
return ba.end();
|
|
19316
|
+
}
|
|
19317
|
+
function book_to_wk3(wb, opts) {
|
|
19318
|
+
var o = opts || {};
|
|
19319
|
+
if (+o.codepage >= 0)
|
|
19320
|
+
set_cp(+o.codepage);
|
|
19321
|
+
if (o.type == "string")
|
|
19322
|
+
throw new Error("Cannot write WK3 to JS string");
|
|
19323
|
+
var ba = buf_array();
|
|
19324
|
+
write_biff_rec(ba, 0, write_BOF_WK3(wb));
|
|
19325
|
+
for (var i2 = 0, cnt = 0; i2 < wb.SheetNames.length; ++i2)
|
|
19326
|
+
if ((wb.Sheets[wb.SheetNames[i2]] || {})["!ref"])
|
|
19327
|
+
write_biff_rec(ba, 27, write_XFORMAT_SHEETNAME(wb.SheetNames[i2], cnt++));
|
|
19328
|
+
var wsidx = 0;
|
|
19329
|
+
for (i2 = 0; i2 < wb.SheetNames.length; ++i2) {
|
|
19330
|
+
var ws = wb.Sheets[wb.SheetNames[i2]];
|
|
19331
|
+
if (!ws || !ws["!ref"])
|
|
19332
|
+
continue;
|
|
19333
|
+
var range = safe_decode_range(ws["!ref"]);
|
|
19334
|
+
var dense = Array.isArray(ws);
|
|
19335
|
+
var cols = [];
|
|
19336
|
+
var max_R = Math.min(range.e.r, 8191);
|
|
19337
|
+
for (var R = range.s.r; R <= max_R; ++R) {
|
|
19338
|
+
var rr = encode_row(R);
|
|
19339
|
+
for (var C = range.s.c; C <= range.e.c; ++C) {
|
|
19340
|
+
if (R === range.s.r)
|
|
19341
|
+
cols[C] = encode_col(C);
|
|
19342
|
+
var ref = cols[C] + rr;
|
|
19343
|
+
var cell = dense ? (ws[R] || [])[C] : ws[ref];
|
|
19344
|
+
if (!cell || cell.t == "z")
|
|
19345
|
+
continue;
|
|
19346
|
+
if (cell.t == "n") {
|
|
19347
|
+
write_biff_rec(ba, 23, write_NUMBER_17(R, C, wsidx, cell.v));
|
|
19348
|
+
} else {
|
|
19349
|
+
var str = format_cell(cell);
|
|
19350
|
+
write_biff_rec(ba, 22, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));
|
|
19351
|
+
}
|
|
19352
|
+
}
|
|
19353
|
+
}
|
|
19354
|
+
++wsidx;
|
|
19355
|
+
}
|
|
19356
|
+
write_biff_rec(ba, 1);
|
|
19357
|
+
return ba.end();
|
|
19358
|
+
}
|
|
19359
|
+
function write_BOF_WK1(v) {
|
|
19360
|
+
var out = new_buf(2);
|
|
19361
|
+
out.write_shift(2, v);
|
|
19362
|
+
return out;
|
|
19363
|
+
}
|
|
19364
|
+
function write_BOF_WK3(wb) {
|
|
19365
|
+
var out = new_buf(26);
|
|
19366
|
+
out.write_shift(2, 4096);
|
|
19367
|
+
out.write_shift(2, 4);
|
|
19368
|
+
out.write_shift(4, 0);
|
|
19369
|
+
var rows = 0, cols = 0, wscnt = 0;
|
|
19370
|
+
for (var i2 = 0; i2 < wb.SheetNames.length; ++i2) {
|
|
19371
|
+
var name = wb.SheetNames[i2];
|
|
19372
|
+
var ws = wb.Sheets[name];
|
|
19373
|
+
if (!ws || !ws["!ref"])
|
|
19374
|
+
continue;
|
|
19375
|
+
++wscnt;
|
|
19376
|
+
var range = decode_range(ws["!ref"]);
|
|
19377
|
+
if (rows < range.e.r)
|
|
19378
|
+
rows = range.e.r;
|
|
19379
|
+
if (cols < range.e.c)
|
|
19380
|
+
cols = range.e.c;
|
|
19381
|
+
}
|
|
19382
|
+
if (rows > 8191)
|
|
19383
|
+
rows = 8191;
|
|
19384
|
+
out.write_shift(2, rows);
|
|
19385
|
+
out.write_shift(1, wscnt);
|
|
19386
|
+
out.write_shift(1, cols);
|
|
19387
|
+
out.write_shift(2, 0);
|
|
19388
|
+
out.write_shift(2, 0);
|
|
19389
|
+
out.write_shift(1, 1);
|
|
19390
|
+
out.write_shift(1, 2);
|
|
19391
|
+
out.write_shift(4, 0);
|
|
19392
|
+
out.write_shift(4, 0);
|
|
19393
|
+
return out;
|
|
19096
19394
|
}
|
|
19097
|
-
function parse_RANGE(blob) {
|
|
19395
|
+
function parse_RANGE(blob, length, opts) {
|
|
19098
19396
|
var o = { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } };
|
|
19397
|
+
if (length == 8 && opts.qpro) {
|
|
19398
|
+
o.s.c = blob.read_shift(1);
|
|
19399
|
+
blob.l++;
|
|
19400
|
+
o.s.r = blob.read_shift(2);
|
|
19401
|
+
o.e.c = blob.read_shift(1);
|
|
19402
|
+
blob.l++;
|
|
19403
|
+
o.e.r = blob.read_shift(2);
|
|
19404
|
+
return o;
|
|
19405
|
+
}
|
|
19099
19406
|
o.s.c = blob.read_shift(2);
|
|
19100
19407
|
o.s.r = blob.read_shift(2);
|
|
19408
|
+
if (length == 12 && opts.qpro)
|
|
19409
|
+
blob.l += 2;
|
|
19101
19410
|
o.e.c = blob.read_shift(2);
|
|
19102
19411
|
o.e.r = blob.read_shift(2);
|
|
19412
|
+
if (length == 12 && opts.qpro)
|
|
19413
|
+
blob.l += 2;
|
|
19103
19414
|
if (o.s.c == 65535)
|
|
19104
19415
|
o.s.c = o.e.c = o.s.r = o.e.r = 0;
|
|
19105
19416
|
return o;
|
|
19106
19417
|
}
|
|
19418
|
+
function write_RANGE(range) {
|
|
19419
|
+
var out = new_buf(8);
|
|
19420
|
+
out.write_shift(2, range.s.c);
|
|
19421
|
+
out.write_shift(2, range.s.r);
|
|
19422
|
+
out.write_shift(2, range.e.c);
|
|
19423
|
+
out.write_shift(2, range.e.r);
|
|
19424
|
+
return out;
|
|
19425
|
+
}
|
|
19107
19426
|
function parse_cell(blob, length, opts) {
|
|
19108
|
-
var o = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0];
|
|
19427
|
+
var o = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0, 0];
|
|
19109
19428
|
if (opts.qpro && opts.vers != 20768) {
|
|
19110
19429
|
o[0].c = blob.read_shift(1);
|
|
19111
|
-
blob.
|
|
19430
|
+
o[3] = blob.read_shift(1);
|
|
19112
19431
|
o[0].r = blob.read_shift(2);
|
|
19113
19432
|
blob.l += 2;
|
|
19114
19433
|
} else {
|
|
@@ -19133,16 +19452,45 @@
|
|
|
19133
19452
|
o[1].v = blob.read_shift(tgt - blob.l, "cstr");
|
|
19134
19453
|
return o;
|
|
19135
19454
|
}
|
|
19455
|
+
function write_LABEL(R, C, s) {
|
|
19456
|
+
var o = new_buf(7 + s.length);
|
|
19457
|
+
o.write_shift(1, 255);
|
|
19458
|
+
o.write_shift(2, C);
|
|
19459
|
+
o.write_shift(2, R);
|
|
19460
|
+
o.write_shift(1, 39);
|
|
19461
|
+
for (var i2 = 0; i2 < o.length; ++i2) {
|
|
19462
|
+
var cc = s.charCodeAt(i2);
|
|
19463
|
+
o.write_shift(1, cc >= 128 ? 95 : cc);
|
|
19464
|
+
}
|
|
19465
|
+
o.write_shift(1, 0);
|
|
19466
|
+
return o;
|
|
19467
|
+
}
|
|
19136
19468
|
function parse_INTEGER(blob, length, opts) {
|
|
19137
19469
|
var o = parse_cell(blob, length, opts);
|
|
19138
19470
|
o[1].v = blob.read_shift(2, "i");
|
|
19139
19471
|
return o;
|
|
19140
19472
|
}
|
|
19473
|
+
function write_INTEGER(R, C, v) {
|
|
19474
|
+
var o = new_buf(7);
|
|
19475
|
+
o.write_shift(1, 255);
|
|
19476
|
+
o.write_shift(2, C);
|
|
19477
|
+
o.write_shift(2, R);
|
|
19478
|
+
o.write_shift(2, v, "i");
|
|
19479
|
+
return o;
|
|
19480
|
+
}
|
|
19141
19481
|
function parse_NUMBER(blob, length, opts) {
|
|
19142
19482
|
var o = parse_cell(blob, length, opts);
|
|
19143
19483
|
o[1].v = blob.read_shift(8, "f");
|
|
19144
19484
|
return o;
|
|
19145
19485
|
}
|
|
19486
|
+
function write_NUMBER(R, C, v) {
|
|
19487
|
+
var o = new_buf(13);
|
|
19488
|
+
o.write_shift(1, 255);
|
|
19489
|
+
o.write_shift(2, C);
|
|
19490
|
+
o.write_shift(2, R);
|
|
19491
|
+
o.write_shift(8, v, "f");
|
|
19492
|
+
return o;
|
|
19493
|
+
}
|
|
19146
19494
|
function parse_FORMULA(blob, length, opts) {
|
|
19147
19495
|
var tgt = blob.l + length;
|
|
19148
19496
|
var o = parse_cell(blob, length, opts);
|
|
@@ -19151,10 +19499,192 @@
|
|
|
19151
19499
|
blob.l = tgt;
|
|
19152
19500
|
else {
|
|
19153
19501
|
var flen = blob.read_shift(2);
|
|
19502
|
+
wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);
|
|
19154
19503
|
blob.l += flen;
|
|
19155
19504
|
}
|
|
19156
19505
|
return o;
|
|
19157
19506
|
}
|
|
19507
|
+
function wk1_parse_rc(B, V, col) {
|
|
19508
|
+
var rel = V & 32768;
|
|
19509
|
+
V &= ~32768;
|
|
19510
|
+
V = (rel ? B : 0) + (V >= 8192 ? V - 16384 : V);
|
|
19511
|
+
return (rel ? "" : "$") + (col ? encode_col(V) : encode_row(V));
|
|
19512
|
+
}
|
|
19513
|
+
var oprec = [
|
|
19514
|
+
8,
|
|
19515
|
+
8,
|
|
19516
|
+
8,
|
|
19517
|
+
8,
|
|
19518
|
+
8,
|
|
19519
|
+
8,
|
|
19520
|
+
8,
|
|
19521
|
+
8,
|
|
19522
|
+
6,
|
|
19523
|
+
4,
|
|
19524
|
+
4,
|
|
19525
|
+
5,
|
|
19526
|
+
5,
|
|
19527
|
+
7,
|
|
19528
|
+
3,
|
|
19529
|
+
3,
|
|
19530
|
+
3,
|
|
19531
|
+
3,
|
|
19532
|
+
3,
|
|
19533
|
+
3,
|
|
19534
|
+
1,
|
|
19535
|
+
1,
|
|
19536
|
+
2,
|
|
19537
|
+
6,
|
|
19538
|
+
8,
|
|
19539
|
+
8,
|
|
19540
|
+
8,
|
|
19541
|
+
8,
|
|
19542
|
+
8,
|
|
19543
|
+
8,
|
|
19544
|
+
8,
|
|
19545
|
+
8
|
|
19546
|
+
];
|
|
19547
|
+
var FuncTab = {
|
|
19548
|
+
51: ["FALSE", 0],
|
|
19549
|
+
52: ["TRUE", 0],
|
|
19550
|
+
70: ["LEN", 1],
|
|
19551
|
+
80: ["SUM", 69],
|
|
19552
|
+
81: ["AVERAGEA", 69],
|
|
19553
|
+
82: ["COUNTA", 69],
|
|
19554
|
+
83: ["MINA", 69],
|
|
19555
|
+
84: ["MAXA", 69],
|
|
19556
|
+
111: ["T", 1]
|
|
19557
|
+
};
|
|
19558
|
+
var BinOpTab = [
|
|
19559
|
+
"",
|
|
19560
|
+
"",
|
|
19561
|
+
"",
|
|
19562
|
+
"",
|
|
19563
|
+
"",
|
|
19564
|
+
"",
|
|
19565
|
+
"",
|
|
19566
|
+
"",
|
|
19567
|
+
"",
|
|
19568
|
+
"+",
|
|
19569
|
+
"-",
|
|
19570
|
+
"*",
|
|
19571
|
+
"/",
|
|
19572
|
+
"^",
|
|
19573
|
+
"=",
|
|
19574
|
+
"<>",
|
|
19575
|
+
"<=",
|
|
19576
|
+
">=",
|
|
19577
|
+
"<",
|
|
19578
|
+
">",
|
|
19579
|
+
"",
|
|
19580
|
+
"",
|
|
19581
|
+
"",
|
|
19582
|
+
"",
|
|
19583
|
+
"&",
|
|
19584
|
+
"",
|
|
19585
|
+
"",
|
|
19586
|
+
"",
|
|
19587
|
+
"",
|
|
19588
|
+
"",
|
|
19589
|
+
"",
|
|
19590
|
+
""
|
|
19591
|
+
];
|
|
19592
|
+
function wk1_fmla_to_csf(blob, o) {
|
|
19593
|
+
prep_blob(blob, 0);
|
|
19594
|
+
var out = [], argc = 0, R = "", C = "", argL = "", argR = "";
|
|
19595
|
+
while (blob.l < blob.length) {
|
|
19596
|
+
var cc = blob[blob.l++];
|
|
19597
|
+
switch (cc) {
|
|
19598
|
+
case 0:
|
|
19599
|
+
out.push(blob.read_shift(8, "f"));
|
|
19600
|
+
break;
|
|
19601
|
+
case 1:
|
|
19602
|
+
{
|
|
19603
|
+
C = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
|
|
19604
|
+
R = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
|
|
19605
|
+
out.push(C + R);
|
|
19606
|
+
}
|
|
19607
|
+
break;
|
|
19608
|
+
case 2:
|
|
19609
|
+
{
|
|
19610
|
+
var c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
|
|
19611
|
+
var r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
|
|
19612
|
+
C = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
|
|
19613
|
+
R = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
|
|
19614
|
+
out.push(c + r + ":" + C + R);
|
|
19615
|
+
}
|
|
19616
|
+
break;
|
|
19617
|
+
case 3:
|
|
19618
|
+
if (blob.l < blob.length) {
|
|
19619
|
+
console.error("WK1 premature formula end");
|
|
19620
|
+
return;
|
|
19621
|
+
}
|
|
19622
|
+
break;
|
|
19623
|
+
case 4:
|
|
19624
|
+
out.push("(" + out.pop() + ")");
|
|
19625
|
+
break;
|
|
19626
|
+
case 5:
|
|
19627
|
+
out.push(blob.read_shift(2));
|
|
19628
|
+
break;
|
|
19629
|
+
case 6:
|
|
19630
|
+
{
|
|
19631
|
+
var Z = "";
|
|
19632
|
+
while (cc = blob[blob.l++])
|
|
19633
|
+
Z += String.fromCharCode(cc);
|
|
19634
|
+
out.push('"' + Z.replace(/"/g, '""') + '"');
|
|
19635
|
+
break;
|
|
19636
|
+
}
|
|
19637
|
+
break;
|
|
19638
|
+
case 8:
|
|
19639
|
+
out.push("-" + out.pop());
|
|
19640
|
+
break;
|
|
19641
|
+
case 23:
|
|
19642
|
+
out.push("+" + out.pop());
|
|
19643
|
+
break;
|
|
19644
|
+
case 22:
|
|
19645
|
+
out.push("NOT(" + out.pop() + ")");
|
|
19646
|
+
break;
|
|
19647
|
+
case 20:
|
|
19648
|
+
case 21:
|
|
19649
|
+
{
|
|
19650
|
+
argR = out.pop();
|
|
19651
|
+
argL = out.pop();
|
|
19652
|
+
out.push(["AND", "OR"][cc - 20] + "(" + argL + "," + argR + ")");
|
|
19653
|
+
}
|
|
19654
|
+
break;
|
|
19655
|
+
default:
|
|
19656
|
+
if (cc < 32 && BinOpTab[cc]) {
|
|
19657
|
+
argR = out.pop();
|
|
19658
|
+
argL = out.pop();
|
|
19659
|
+
out.push(argL + BinOpTab[cc] + argR);
|
|
19660
|
+
} else if (FuncTab[cc]) {
|
|
19661
|
+
argc = FuncTab[cc][1];
|
|
19662
|
+
if (argc == 69)
|
|
19663
|
+
argc = blob[blob.l++];
|
|
19664
|
+
if (argc > out.length) {
|
|
19665
|
+
console.error("WK1 bad formula parse 0x" + cc.toString(16) + ":|" + out.join("|") + "|");
|
|
19666
|
+
return;
|
|
19667
|
+
}
|
|
19668
|
+
var args = out.slice(-argc);
|
|
19669
|
+
out.length -= argc;
|
|
19670
|
+
out.push(FuncTab[cc][0] + "(" + args.join(",") + ")");
|
|
19671
|
+
} else if (cc <= 7)
|
|
19672
|
+
return console.error("WK1 invalid opcode " + cc.toString(16));
|
|
19673
|
+
else if (cc <= 24)
|
|
19674
|
+
return console.error("WK1 unsupported op " + cc.toString(16));
|
|
19675
|
+
else if (cc <= 30)
|
|
19676
|
+
return console.error("WK1 invalid opcode " + cc.toString(16));
|
|
19677
|
+
else if (cc <= 115)
|
|
19678
|
+
return console.error("WK1 unsupported function opcode " + cc.toString(16));
|
|
19679
|
+
else
|
|
19680
|
+
return console.error("WK1 unrecognized opcode " + cc.toString(16));
|
|
19681
|
+
}
|
|
19682
|
+
}
|
|
19683
|
+
if (out.length == 1)
|
|
19684
|
+
o[1].f = "" + out[0];
|
|
19685
|
+
else
|
|
19686
|
+
console.error("WK1 bad formula parse |" + out.join("|") + "|");
|
|
19687
|
+
}
|
|
19158
19688
|
function parse_cell_3(blob) {
|
|
19159
19689
|
var o = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0];
|
|
19160
19690
|
o[0].r = blob.read_shift(2);
|
|
@@ -19168,29 +19698,49 @@
|
|
|
19168
19698
|
o[1].v = blob.read_shift(length - 4, "cstr");
|
|
19169
19699
|
return o;
|
|
19170
19700
|
}
|
|
19701
|
+
function write_LABEL_16(R, C, wsidx, s) {
|
|
19702
|
+
var o = new_buf(6 + s.length);
|
|
19703
|
+
o.write_shift(2, R);
|
|
19704
|
+
o.write_shift(1, wsidx);
|
|
19705
|
+
o.write_shift(1, C);
|
|
19706
|
+
o.write_shift(1, 39);
|
|
19707
|
+
for (var i2 = 0; i2 < s.length; ++i2) {
|
|
19708
|
+
var cc = s.charCodeAt(i2);
|
|
19709
|
+
o.write_shift(1, cc >= 128 ? 95 : cc);
|
|
19710
|
+
}
|
|
19711
|
+
o.write_shift(1, 0);
|
|
19712
|
+
return o;
|
|
19713
|
+
}
|
|
19171
19714
|
function parse_NUMBER_18(blob, length) {
|
|
19172
19715
|
var o = parse_cell_3(blob, length);
|
|
19173
19716
|
o[1].v = blob.read_shift(2);
|
|
19174
19717
|
var v = o[1].v >> 1;
|
|
19175
19718
|
if (o[1].v & 1) {
|
|
19176
19719
|
switch (v & 7) {
|
|
19720
|
+
case 0:
|
|
19721
|
+
v = (v >> 3) * 5e3;
|
|
19722
|
+
break;
|
|
19177
19723
|
case 1:
|
|
19178
19724
|
v = (v >> 3) * 500;
|
|
19179
19725
|
break;
|
|
19180
19726
|
case 2:
|
|
19181
19727
|
v = (v >> 3) / 20;
|
|
19182
19728
|
break;
|
|
19729
|
+
case 3:
|
|
19730
|
+
v = (v >> 3) / 200;
|
|
19731
|
+
break;
|
|
19183
19732
|
case 4:
|
|
19184
19733
|
v = (v >> 3) / 2e3;
|
|
19185
19734
|
break;
|
|
19735
|
+
case 5:
|
|
19736
|
+
v = (v >> 3) / 2e4;
|
|
19737
|
+
break;
|
|
19186
19738
|
case 6:
|
|
19187
19739
|
v = (v >> 3) / 16;
|
|
19188
19740
|
break;
|
|
19189
19741
|
case 7:
|
|
19190
19742
|
v = (v >> 3) / 64;
|
|
19191
19743
|
break;
|
|
19192
|
-
default:
|
|
19193
|
-
throw "unknown NUMBER_18 encoding " + (v & 7);
|
|
19194
19744
|
}
|
|
19195
19745
|
}
|
|
19196
19746
|
o[1].v = v;
|
|
@@ -19202,12 +19752,54 @@
|
|
|
19202
19752
|
var v2 = blob.read_shift(4);
|
|
19203
19753
|
var e = blob.read_shift(2);
|
|
19204
19754
|
if (e == 65535) {
|
|
19205
|
-
|
|
19755
|
+
if (v1 === 0 && v2 === 3221225472) {
|
|
19756
|
+
o[1].t = "e";
|
|
19757
|
+
o[1].v = 15;
|
|
19758
|
+
} else if (v1 === 0 && v2 === 3489660928) {
|
|
19759
|
+
o[1].t = "e";
|
|
19760
|
+
o[1].v = 42;
|
|
19761
|
+
} else
|
|
19762
|
+
o[1].v = 0;
|
|
19206
19763
|
return o;
|
|
19207
19764
|
}
|
|
19208
19765
|
var s = e & 32768;
|
|
19209
19766
|
e = (e & 32767) - 16446;
|
|
19210
|
-
o[1].v = (s * 2
|
|
19767
|
+
o[1].v = (1 - s * 2) * (v2 * Math.pow(2, e + 32) + v1 * Math.pow(2, e));
|
|
19768
|
+
return o;
|
|
19769
|
+
}
|
|
19770
|
+
function write_NUMBER_17(R, C, wsidx, v) {
|
|
19771
|
+
var o = new_buf(14);
|
|
19772
|
+
o.write_shift(2, R);
|
|
19773
|
+
o.write_shift(1, wsidx);
|
|
19774
|
+
o.write_shift(1, C);
|
|
19775
|
+
if (v == 0) {
|
|
19776
|
+
o.write_shift(4, 0);
|
|
19777
|
+
o.write_shift(4, 0);
|
|
19778
|
+
o.write_shift(2, 65535);
|
|
19779
|
+
return o;
|
|
19780
|
+
}
|
|
19781
|
+
var s = 0, e = 0, v1 = 0, v2 = 0;
|
|
19782
|
+
if (v < 0) {
|
|
19783
|
+
s = 1;
|
|
19784
|
+
v = -v;
|
|
19785
|
+
}
|
|
19786
|
+
e = Math.log2(v) | 0;
|
|
19787
|
+
v /= Math.pow(2, e - 31);
|
|
19788
|
+
v2 = v >>> 0;
|
|
19789
|
+
if ((v2 & 2147483648) == 0) {
|
|
19790
|
+
v /= 2;
|
|
19791
|
+
++e;
|
|
19792
|
+
v2 = v >>> 0;
|
|
19793
|
+
}
|
|
19794
|
+
v -= v2;
|
|
19795
|
+
v2 |= 2147483648;
|
|
19796
|
+
v2 >>>= 0;
|
|
19797
|
+
v *= Math.pow(2, 32);
|
|
19798
|
+
v1 = v >>> 0;
|
|
19799
|
+
o.write_shift(4, v1);
|
|
19800
|
+
o.write_shift(4, v2);
|
|
19801
|
+
e += 16383 + (s ? 32768 : 0);
|
|
19802
|
+
o.write_shift(2, e);
|
|
19211
19803
|
return o;
|
|
19212
19804
|
}
|
|
19213
19805
|
function parse_FORMULA_19(blob, length) {
|
|
@@ -19232,6 +19824,55 @@
|
|
|
19232
19824
|
blob.l += length - 10;
|
|
19233
19825
|
return o;
|
|
19234
19826
|
}
|
|
19827
|
+
function parse_SHEETNAMECS(blob, length) {
|
|
19828
|
+
return blob[blob.l + length - 1] == 0 ? blob.read_shift(length, "cstr") : "";
|
|
19829
|
+
}
|
|
19830
|
+
function parse_SHEETNAMELP(blob, length) {
|
|
19831
|
+
var len = blob[blob.l++];
|
|
19832
|
+
if (len > length - 1)
|
|
19833
|
+
len = length - 1;
|
|
19834
|
+
var o = "";
|
|
19835
|
+
while (o.length < len)
|
|
19836
|
+
o += String.fromCharCode(blob[blob.l++]);
|
|
19837
|
+
return o;
|
|
19838
|
+
}
|
|
19839
|
+
function parse_SHEETINFOQP(blob, length, opts) {
|
|
19840
|
+
if (!opts.qpro || length < 21)
|
|
19841
|
+
return;
|
|
19842
|
+
var id = blob.read_shift(1);
|
|
19843
|
+
blob.l += 17;
|
|
19844
|
+
var len = blob.read_shift(1);
|
|
19845
|
+
blob.l += 2;
|
|
19846
|
+
var nm = blob.read_shift(length - 21, "cstr");
|
|
19847
|
+
return [id, nm];
|
|
19848
|
+
}
|
|
19849
|
+
function parse_XFORMAT(blob, length) {
|
|
19850
|
+
var o = {}, tgt = blob.l + length;
|
|
19851
|
+
while (blob.l < tgt) {
|
|
19852
|
+
var dt = blob.read_shift(2);
|
|
19853
|
+
if (dt == 14e3) {
|
|
19854
|
+
o[dt] = [0, ""];
|
|
19855
|
+
o[dt][0] = blob.read_shift(2);
|
|
19856
|
+
while (blob[blob.l]) {
|
|
19857
|
+
o[dt][1] += String.fromCharCode(blob[blob.l]);
|
|
19858
|
+
blob.l++;
|
|
19859
|
+
}
|
|
19860
|
+
blob.l++;
|
|
19861
|
+
}
|
|
19862
|
+
}
|
|
19863
|
+
return o;
|
|
19864
|
+
}
|
|
19865
|
+
function write_XFORMAT_SHEETNAME(name, wsidx) {
|
|
19866
|
+
var out = new_buf(5 + name.length);
|
|
19867
|
+
out.write_shift(2, 14e3);
|
|
19868
|
+
out.write_shift(2, wsidx);
|
|
19869
|
+
for (var i2 = 0; i2 < name.length; ++i2) {
|
|
19870
|
+
var cc = name.charCodeAt(i2);
|
|
19871
|
+
out[out.l++] = cc > 127 ? 95 : cc;
|
|
19872
|
+
}
|
|
19873
|
+
out[out.l++] = 0;
|
|
19874
|
+
return out;
|
|
19875
|
+
}
|
|
19235
19876
|
var WK1Enum = {
|
|
19236
19877
|
0: { n: "BOF", f: parseuint16 },
|
|
19237
19878
|
1: { n: "EOF" },
|
|
@@ -19290,44 +19931,142 @@
|
|
|
19290
19931
|
72: { n: "ACOMM" },
|
|
19291
19932
|
73: { n: "AMACRO" },
|
|
19292
19933
|
74: { n: "PARSE" },
|
|
19293
|
-
|
|
19934
|
+
102: { n: "PRANGES??" },
|
|
19935
|
+
103: { n: "RRANGES??" },
|
|
19936
|
+
104: { n: "FNAME??" },
|
|
19937
|
+
105: { n: "MRANGES??" },
|
|
19938
|
+
204: { n: "SHEETNAMECS", f: parse_SHEETNAMECS },
|
|
19939
|
+
222: { n: "SHEETNAMELP", f: parse_SHEETNAMELP },
|
|
19940
|
+
65535: { n: "" }
|
|
19294
19941
|
};
|
|
19295
19942
|
var WK3Enum = {
|
|
19296
19943
|
0: { n: "BOF" },
|
|
19297
19944
|
1: { n: "EOF" },
|
|
19298
|
-
|
|
19299
|
-
|
|
19300
|
-
|
|
19301
|
-
|
|
19302
|
-
|
|
19303
|
-
|
|
19304
|
-
|
|
19305
|
-
|
|
19306
|
-
|
|
19307
|
-
|
|
19308
|
-
|
|
19309
|
-
|
|
19310
|
-
|
|
19311
|
-
|
|
19945
|
+
2: { n: "PASSWORD" },
|
|
19946
|
+
3: { n: "CALCSET" },
|
|
19947
|
+
4: { n: "WINDOWSET" },
|
|
19948
|
+
5: { n: "SHEETCELLPTR" },
|
|
19949
|
+
6: { n: "SHEETLAYOUT" },
|
|
19950
|
+
7: { n: "COLUMNWIDTH" },
|
|
19951
|
+
8: { n: "HIDDENCOLUMN" },
|
|
19952
|
+
9: { n: "USERRANGE" },
|
|
19953
|
+
10: { n: "SYSTEMRANGE" },
|
|
19954
|
+
11: { n: "ZEROFORCE" },
|
|
19955
|
+
12: { n: "SORTKEYDIR" },
|
|
19956
|
+
13: { n: "FILESEAL" },
|
|
19957
|
+
14: { n: "DATAFILLNUMS" },
|
|
19958
|
+
15: { n: "PRINTMAIN" },
|
|
19959
|
+
16: { n: "PRINTSTRING" },
|
|
19960
|
+
17: { n: "GRAPHMAIN" },
|
|
19961
|
+
18: { n: "GRAPHSTRING" },
|
|
19312
19962
|
19: { n: "??" },
|
|
19313
|
-
|
|
19963
|
+
20: { n: "ERRCELL" },
|
|
19964
|
+
21: { n: "NACELL" },
|
|
19314
19965
|
22: { n: "LABEL16", f: parse_LABEL_16 },
|
|
19315
19966
|
23: { n: "NUMBER17", f: parse_NUMBER_17 },
|
|
19316
19967
|
24: { n: "NUMBER18", f: parse_NUMBER_18 },
|
|
19317
19968
|
25: { n: "FORMULA19", f: parse_FORMULA_19 },
|
|
19318
|
-
26: { n: "
|
|
19319
|
-
27: { n: "
|
|
19320
|
-
28: { n: "
|
|
19321
|
-
29: { n: "
|
|
19322
|
-
30: { n: "
|
|
19323
|
-
31: { n: "
|
|
19324
|
-
|
|
19969
|
+
26: { n: "FORMULA1A" },
|
|
19970
|
+
27: { n: "XFORMAT", f: parse_XFORMAT },
|
|
19971
|
+
28: { n: "DTLABELMISC" },
|
|
19972
|
+
29: { n: "DTLABELCELL" },
|
|
19973
|
+
30: { n: "GRAPHWINDOW" },
|
|
19974
|
+
31: { n: "CPA" },
|
|
19975
|
+
32: { n: "LPLAUTO" },
|
|
19976
|
+
33: { n: "QUERY" },
|
|
19977
|
+
34: { n: "HIDDENSHEET" },
|
|
19978
|
+
35: { n: "??" },
|
|
19325
19979
|
37: { n: "NUMBER25", f: parse_NUMBER_25 },
|
|
19980
|
+
38: { n: "??" },
|
|
19326
19981
|
39: { n: "NUMBER27", f: parse_NUMBER_27 },
|
|
19327
19982
|
40: { n: "FORMULA28", f: parse_FORMULA_28 },
|
|
19328
|
-
|
|
19983
|
+
142: { n: "??" },
|
|
19984
|
+
147: { n: "??" },
|
|
19985
|
+
150: { n: "??" },
|
|
19986
|
+
151: { n: "??" },
|
|
19987
|
+
152: { n: "??" },
|
|
19988
|
+
153: { n: "??" },
|
|
19989
|
+
154: { n: "??" },
|
|
19990
|
+
155: { n: "??" },
|
|
19991
|
+
156: { n: "??" },
|
|
19992
|
+
163: { n: "??" },
|
|
19993
|
+
174: { n: "??" },
|
|
19994
|
+
175: { n: "??" },
|
|
19995
|
+
176: { n: "??" },
|
|
19996
|
+
177: { n: "??" },
|
|
19997
|
+
184: { n: "??" },
|
|
19998
|
+
185: { n: "??" },
|
|
19999
|
+
186: { n: "??" },
|
|
20000
|
+
187: { n: "??" },
|
|
20001
|
+
188: { n: "??" },
|
|
20002
|
+
195: { n: "??" },
|
|
20003
|
+
201: { n: "??" },
|
|
20004
|
+
204: { n: "SHEETNAMECS", f: parse_SHEETNAMECS },
|
|
20005
|
+
205: { n: "??" },
|
|
20006
|
+
206: { n: "??" },
|
|
20007
|
+
207: { n: "??" },
|
|
20008
|
+
208: { n: "??" },
|
|
20009
|
+
256: { n: "??" },
|
|
20010
|
+
259: { n: "??" },
|
|
20011
|
+
260: { n: "??" },
|
|
20012
|
+
261: { n: "??" },
|
|
20013
|
+
262: { n: "??" },
|
|
20014
|
+
263: { n: "??" },
|
|
20015
|
+
265: { n: "??" },
|
|
20016
|
+
266: { n: "??" },
|
|
20017
|
+
267: { n: "??" },
|
|
20018
|
+
268: { n: "??" },
|
|
20019
|
+
270: { n: "??" },
|
|
20020
|
+
271: { n: "??" },
|
|
20021
|
+
384: { n: "??" },
|
|
20022
|
+
389: { n: "??" },
|
|
20023
|
+
390: { n: "??" },
|
|
20024
|
+
393: { n: "??" },
|
|
20025
|
+
396: { n: "??" },
|
|
20026
|
+
512: { n: "??" },
|
|
20027
|
+
514: { n: "??" },
|
|
20028
|
+
513: { n: "??" },
|
|
20029
|
+
516: { n: "??" },
|
|
20030
|
+
517: { n: "??" },
|
|
20031
|
+
640: { n: "??" },
|
|
20032
|
+
641: { n: "??" },
|
|
20033
|
+
642: { n: "??" },
|
|
20034
|
+
643: { n: "??" },
|
|
20035
|
+
644: { n: "??" },
|
|
20036
|
+
645: { n: "??" },
|
|
20037
|
+
646: { n: "??" },
|
|
20038
|
+
647: { n: "??" },
|
|
20039
|
+
648: { n: "??" },
|
|
20040
|
+
658: { n: "??" },
|
|
20041
|
+
659: { n: "??" },
|
|
20042
|
+
660: { n: "??" },
|
|
20043
|
+
661: { n: "??" },
|
|
20044
|
+
662: { n: "??" },
|
|
20045
|
+
665: { n: "??" },
|
|
20046
|
+
666: { n: "??" },
|
|
20047
|
+
768: { n: "??" },
|
|
20048
|
+
772: { n: "??" },
|
|
20049
|
+
1537: { n: "SHEETINFOQP", f: parse_SHEETINFOQP },
|
|
20050
|
+
1600: { n: "??" },
|
|
20051
|
+
1602: { n: "??" },
|
|
20052
|
+
1793: { n: "??" },
|
|
20053
|
+
1794: { n: "??" },
|
|
20054
|
+
1795: { n: "??" },
|
|
20055
|
+
1796: { n: "??" },
|
|
20056
|
+
1920: { n: "??" },
|
|
20057
|
+
2048: { n: "??" },
|
|
20058
|
+
2049: { n: "??" },
|
|
20059
|
+
2052: { n: "??" },
|
|
20060
|
+
2688: { n: "??" },
|
|
20061
|
+
10998: { n: "??" },
|
|
20062
|
+
12849: { n: "??" },
|
|
20063
|
+
28233: { n: "??" },
|
|
20064
|
+
28484: { n: "??" },
|
|
20065
|
+
65535: { n: "" }
|
|
19329
20066
|
};
|
|
19330
20067
|
return {
|
|
20068
|
+
sheet_to_wk1,
|
|
20069
|
+
book_to_wk3,
|
|
19331
20070
|
to_workbook: lotus_to_workbook
|
|
19332
20071
|
};
|
|
19333
20072
|
}();
|
|
@@ -19992,7 +20731,7 @@
|
|
|
19992
20731
|
case "binary":
|
|
19993
20732
|
return rtf_to_sheet_str(d, opts);
|
|
19994
20733
|
case "buffer":
|
|
19995
|
-
return rtf_to_sheet_str(d.toString("binary"), opts);
|
|
20734
|
+
return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString("binary") : a2s(d), opts);
|
|
19996
20735
|
case "array":
|
|
19997
20736
|
return rtf_to_sheet_str(cc2str(d), opts);
|
|
19998
20737
|
}
|
|
@@ -20001,9 +20740,38 @@
|
|
|
20001
20740
|
function rtf_to_sheet_str(str, opts) {
|
|
20002
20741
|
var o = opts || {};
|
|
20003
20742
|
var ws = o.dense ? [] : {};
|
|
20004
|
-
var
|
|
20005
|
-
if (!
|
|
20743
|
+
var rows = str.match(/\\trowd.*?\\row\b/g);
|
|
20744
|
+
if (!rows.length)
|
|
20006
20745
|
throw new Error("RTF missing table");
|
|
20746
|
+
var range = { s: { c: 0, r: 0 }, e: { c: 0, r: rows.length - 1 } };
|
|
20747
|
+
rows.forEach(function(rowtf, R) {
|
|
20748
|
+
if (Array.isArray(ws))
|
|
20749
|
+
ws[R] = [];
|
|
20750
|
+
var rtfre = /\\\w+\b/g;
|
|
20751
|
+
var last_index = 0;
|
|
20752
|
+
var res;
|
|
20753
|
+
var C = -1;
|
|
20754
|
+
while (res = rtfre.exec(rowtf)) {
|
|
20755
|
+
switch (res[0]) {
|
|
20756
|
+
case "\\cell":
|
|
20757
|
+
var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);
|
|
20758
|
+
if (data[0] == " ")
|
|
20759
|
+
data = data.slice(1);
|
|
20760
|
+
++C;
|
|
20761
|
+
if (data.length) {
|
|
20762
|
+
var cell = { v: data, t: "s" };
|
|
20763
|
+
if (Array.isArray(ws))
|
|
20764
|
+
ws[R][C] = cell;
|
|
20765
|
+
else
|
|
20766
|
+
ws[encode_cell({ r: R, c: C })] = cell;
|
|
20767
|
+
}
|
|
20768
|
+
break;
|
|
20769
|
+
}
|
|
20770
|
+
last_index = rtfre.lastIndex;
|
|
20771
|
+
}
|
|
20772
|
+
if (C > range.e.c)
|
|
20773
|
+
range.e.c = C;
|
|
20774
|
+
});
|
|
20007
20775
|
ws["!ref"] = encode_range(range);
|
|
20008
20776
|
return ws;
|
|
20009
20777
|
}
|
|
@@ -20515,7 +21283,7 @@
|
|
|
20515
21283
|
if (font.color.index == 81)
|
|
20516
21284
|
icv = XLSIcv[1];
|
|
20517
21285
|
if (!icv)
|
|
20518
|
-
|
|
21286
|
+
icv = XLSIcv[1];
|
|
20519
21287
|
font.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);
|
|
20520
21288
|
} else if (y.theme) {
|
|
20521
21289
|
font.color.theme = parseInt(y.theme, 10);
|
|
@@ -20629,7 +21397,7 @@
|
|
|
20629
21397
|
for (i2 = 0; i2 < cellXF_bool.length; ++i2)
|
|
20630
21398
|
if (xf[cellXF_bool[i2]])
|
|
20631
21399
|
xf[cellXF_bool[i2]] = parsexmlbool(xf[cellXF_bool[i2]]);
|
|
20632
|
-
if (xf.numFmtId > 392) {
|
|
21400
|
+
if (styles.NumberFmt && xf.numFmtId > 392) {
|
|
20633
21401
|
for (i2 = 392; i2 > 60; --i2)
|
|
20634
21402
|
if (styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i2]) {
|
|
20635
21403
|
xf.numFmtId = i2;
|
|
@@ -21392,7 +22160,7 @@
|
|
|
21392
22160
|
var dwThemeVersion = blob.read_shift(4);
|
|
21393
22161
|
if (dwThemeVersion === 124226)
|
|
21394
22162
|
return;
|
|
21395
|
-
if (!opts.cellStyles
|
|
22163
|
+
if (!opts.cellStyles) {
|
|
21396
22164
|
blob.l = end;
|
|
21397
22165
|
return;
|
|
21398
22166
|
}
|
|
@@ -21400,7 +22168,7 @@
|
|
|
21400
22168
|
blob.l = end;
|
|
21401
22169
|
var zip;
|
|
21402
22170
|
try {
|
|
21403
|
-
zip =
|
|
22171
|
+
zip = zip_read(data, { type: "array" });
|
|
21404
22172
|
} catch (e) {
|
|
21405
22173
|
return;
|
|
21406
22174
|
}
|
|
@@ -21741,7 +22509,7 @@
|
|
|
21741
22509
|
comment.r = rt.r;
|
|
21742
22510
|
if (rt.r == "<t></t>")
|
|
21743
22511
|
rt.t = rt.h = "";
|
|
21744
|
-
comment.t = rt.t.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
22512
|
+
comment.t = (rt.t || "").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
21745
22513
|
if (opts.cellHTML)
|
|
21746
22514
|
comment.h = rt.h;
|
|
21747
22515
|
commentList.push(comment);
|
|
@@ -22718,7 +23486,8 @@
|
|
|
22718
23486
|
}
|
|
22719
23487
|
}
|
|
22720
23488
|
function get_ixti(supbooks, ixti, opts) {
|
|
22721
|
-
|
|
23489
|
+
var ixtiraw = get_ixti_raw(supbooks, ixti, opts);
|
|
23490
|
+
return ixtiraw == "#REF" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);
|
|
22722
23491
|
}
|
|
22723
23492
|
function stringify_formula(formula, range, cell, supbooks, opts) {
|
|
22724
23493
|
var biff = opts && opts.biff || 8;
|
|
@@ -22887,7 +23656,7 @@
|
|
|
22887
23656
|
else if (supbooks[0] && supbooks[0][nameidx])
|
|
22888
23657
|
o += supbooks[0][nameidx].Name;
|
|
22889
23658
|
else {
|
|
22890
|
-
var ixtidata = get_ixti_raw(supbooks, bookidx, opts).split(";;");
|
|
23659
|
+
var ixtidata = (get_ixti_raw(supbooks, bookidx, opts) || "").split(";;");
|
|
22891
23660
|
if (ixtidata[nameidx - 1])
|
|
22892
23661
|
o = ixtidata[nameidx - 1];
|
|
22893
23662
|
else
|
|
@@ -24500,6 +25269,9 @@
|
|
|
24500
25269
|
p.width = col.width;
|
|
24501
25270
|
if (col.hidden)
|
|
24502
25271
|
p.hidden = true;
|
|
25272
|
+
if (col.level != null) {
|
|
25273
|
+
p.outlineLevel = p.level = col.level;
|
|
25274
|
+
}
|
|
24503
25275
|
return p;
|
|
24504
25276
|
}
|
|
24505
25277
|
function default_margins(margins, mode) {
|
|
@@ -24554,11 +25326,11 @@
|
|
|
24554
25326
|
if (opts.WTF)
|
|
24555
25327
|
throw e;
|
|
24556
25328
|
}
|
|
24557
|
-
if (p.t === "z")
|
|
25329
|
+
if (p.t === "z" && !opts.cellStyles)
|
|
24558
25330
|
return;
|
|
24559
25331
|
if (p.t === "d" && typeof p.v === "string")
|
|
24560
25332
|
p.v = parseDate(p.v);
|
|
24561
|
-
if (!opts || opts.cellText !== false)
|
|
25333
|
+
if ((!opts || opts.cellText !== false) && p.t !== "z")
|
|
24562
25334
|
try {
|
|
24563
25335
|
if (SSF._table[fmtid] == null)
|
|
24564
25336
|
SSF.load(SSFImplicit[fmtid] || "General", fmtid);
|
|
@@ -24628,6 +25400,7 @@
|
|
|
24628
25400
|
var afregex = /<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g;
|
|
24629
25401
|
var marginregex = /<(?:\w:)?pageMargins[^>]*\/>/g;
|
|
24630
25402
|
var sheetprregex = /<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/;
|
|
25403
|
+
var sheetprregex2 = /<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/;
|
|
24631
25404
|
var svsregex = /<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;
|
|
24632
25405
|
function parse_ws_xml(data, opts, idx, rels, wb, themes, styles) {
|
|
24633
25406
|
if (!data)
|
|
@@ -24648,6 +25421,8 @@
|
|
|
24648
25421
|
var sheetPr = data1.match(sheetprregex);
|
|
24649
25422
|
if (sheetPr)
|
|
24650
25423
|
parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);
|
|
25424
|
+
else if (sheetPr = data1.match(sheetprregex2))
|
|
25425
|
+
parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1] || "", s, wb, idx, styles, themes);
|
|
24651
25426
|
var ridx = (data1.match(/<(?:\w*:)?dimension/) || { index: -1 }).index;
|
|
24652
25427
|
if (ridx > 0) {
|
|
24653
25428
|
var ref = data1.slice(ridx, ridx + 50).match(dimregex);
|
|
@@ -24718,6 +25493,9 @@
|
|
|
24718
25493
|
if (data.codeName)
|
|
24719
25494
|
wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));
|
|
24720
25495
|
}
|
|
25496
|
+
function parse_ws_xml_sheetpr2(sheetPr, body, s, wb, idx, styles, themes) {
|
|
25497
|
+
parse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(">")), s, wb, idx);
|
|
25498
|
+
}
|
|
24721
25499
|
function write_ws_xml_sheetpr(ws, wb, idx, opts, o) {
|
|
24722
25500
|
var needed = false;
|
|
24723
25501
|
var props = {}, payload = null;
|
|
@@ -24781,9 +25559,9 @@
|
|
|
24781
25559
|
if (rel) {
|
|
24782
25560
|
val.Target = rel.Target;
|
|
24783
25561
|
if (val.location)
|
|
24784
|
-
val.Target += "#" + val.location;
|
|
25562
|
+
val.Target += "#" + unescapexml(val.location);
|
|
24785
25563
|
} else {
|
|
24786
|
-
val.Target = "#" + val.location;
|
|
25564
|
+
val.Target = "#" + unescapexml(val.location);
|
|
24787
25565
|
rel = { Target: val.Target, TargetMode: "Internal" };
|
|
24788
25566
|
}
|
|
24789
25567
|
val.Rel = rel;
|
|
@@ -24828,6 +25606,8 @@
|
|
|
24828
25606
|
if (coll.hidden)
|
|
24829
25607
|
coll.hidden = parsexmlbool(coll.hidden);
|
|
24830
25608
|
var colm = parseInt(coll.min, 10) - 1, colM = parseInt(coll.max, 10) - 1;
|
|
25609
|
+
if (coll.outlineLevel)
|
|
25610
|
+
coll.level = +coll.outlineLevel || 0;
|
|
24831
25611
|
delete coll.min;
|
|
24832
25612
|
delete coll.max;
|
|
24833
25613
|
coll.width = +coll.width;
|
|
@@ -24953,6 +25733,8 @@
|
|
|
24953
25733
|
delete cell.t;
|
|
24954
25734
|
break;
|
|
24955
25735
|
}
|
|
25736
|
+
if (cell.v.length > 32767)
|
|
25737
|
+
throw new Error("Text length must not exceed 32767 characters");
|
|
24956
25738
|
if (opts && opts.bookSST) {
|
|
24957
25739
|
v = writetag("v", "" + get_sst_id(opts.Strings, cell.v, opts.revStrings));
|
|
24958
25740
|
o.t = "s";
|
|
@@ -24996,11 +25778,47 @@
|
|
|
24996
25778
|
var xlen = x.length;
|
|
24997
25779
|
if (xlen === 0)
|
|
24998
25780
|
continue;
|
|
24999
|
-
|
|
25000
|
-
|
|
25001
|
-
|
|
25002
|
-
|
|
25003
|
-
|
|
25781
|
+
var rstarti = 0;
|
|
25782
|
+
outa:
|
|
25783
|
+
for (ri = 0; ri < xlen; ++ri)
|
|
25784
|
+
switch (x[ri]) {
|
|
25785
|
+
case ">":
|
|
25786
|
+
if (x[ri - 1] != "/") {
|
|
25787
|
+
++ri;
|
|
25788
|
+
break outa;
|
|
25789
|
+
}
|
|
25790
|
+
if (opts && opts.cellStyles) {
|
|
25791
|
+
tag = parsexmltag(x.slice(rstarti, ri), true);
|
|
25792
|
+
tagr = tag.r != null ? parseInt(tag.r, 10) : tagr + 1;
|
|
25793
|
+
tagc = -1;
|
|
25794
|
+
if (opts.sheetRows && opts.sheetRows < tagr)
|
|
25795
|
+
continue;
|
|
25796
|
+
rowobj = {};
|
|
25797
|
+
rowrite = false;
|
|
25798
|
+
if (tag.ht) {
|
|
25799
|
+
rowrite = true;
|
|
25800
|
+
rowobj.hpt = parseFloat(tag.ht);
|
|
25801
|
+
rowobj.hpx = pt2px(rowobj.hpt);
|
|
25802
|
+
}
|
|
25803
|
+
if (tag.hidden == "1") {
|
|
25804
|
+
rowrite = true;
|
|
25805
|
+
rowobj.hidden = true;
|
|
25806
|
+
}
|
|
25807
|
+
if (tag.outlineLevel != null) {
|
|
25808
|
+
rowrite = true;
|
|
25809
|
+
rowobj.level = +tag.outlineLevel;
|
|
25810
|
+
}
|
|
25811
|
+
if (rowrite)
|
|
25812
|
+
rows[tagr - 1] = rowobj;
|
|
25813
|
+
}
|
|
25814
|
+
break;
|
|
25815
|
+
case "<":
|
|
25816
|
+
rstarti = ri;
|
|
25817
|
+
break;
|
|
25818
|
+
}
|
|
25819
|
+
if (rstarti >= ri)
|
|
25820
|
+
break;
|
|
25821
|
+
tag = parsexmltag(x.slice(rstarti, ri), true);
|
|
25004
25822
|
tagr = tag.r != null ? parseInt(tag.r, 10) : tagr + 1;
|
|
25005
25823
|
tagc = -1;
|
|
25006
25824
|
if (opts.sheetRows && opts.sheetRows < tagr)
|
|
@@ -25301,7 +26119,7 @@
|
|
|
25301
26119
|
o[o.length] = "</sheetData>";
|
|
25302
26120
|
o[sidx] = o[sidx].replace("/>", ">");
|
|
25303
26121
|
}
|
|
25304
|
-
if (ws["!protect"]
|
|
26122
|
+
if (ws["!protect"])
|
|
25305
26123
|
o[o.length] = write_ws_xml_protection(ws["!protect"]);
|
|
25306
26124
|
if (ws["!autofilter"] != null)
|
|
25307
26125
|
o[o.length] = write_ws_xml_autofilter(ws["!autofilter"], ws, wb, idx);
|
|
@@ -25424,14 +26242,26 @@
|
|
|
25424
26242
|
}
|
|
25425
26243
|
function parse_BrtWsProp(data, length) {
|
|
25426
26244
|
var z = {};
|
|
25427
|
-
data.l
|
|
26245
|
+
var f = data[data.l];
|
|
26246
|
+
++data.l;
|
|
26247
|
+
z.above = !(f & 64);
|
|
26248
|
+
z.left = !(f & 128);
|
|
26249
|
+
data.l += 18;
|
|
25428
26250
|
z.name = parse_XLSBCodeName(data, length - 19);
|
|
25429
26251
|
return z;
|
|
25430
26252
|
}
|
|
25431
|
-
function write_BrtWsProp(str, o) {
|
|
26253
|
+
function write_BrtWsProp(str, outl, o) {
|
|
25432
26254
|
if (o == null)
|
|
25433
26255
|
o = new_buf(84 + 4 * str.length);
|
|
25434
|
-
|
|
26256
|
+
var f = 192;
|
|
26257
|
+
if (outl) {
|
|
26258
|
+
if (outl.above)
|
|
26259
|
+
f &= ~64;
|
|
26260
|
+
if (outl.left)
|
|
26261
|
+
f &= ~128;
|
|
26262
|
+
}
|
|
26263
|
+
o.write_shift(1, f);
|
|
26264
|
+
for (var i2 = 1; i2 < 3; ++i2)
|
|
25435
26265
|
o.write_shift(1, 0);
|
|
25436
26266
|
write_BrtColor({ auto: 1 }, o);
|
|
25437
26267
|
o.write_shift(-4, -1);
|
|
@@ -25448,6 +26278,15 @@
|
|
|
25448
26278
|
o = new_buf(8);
|
|
25449
26279
|
return write_XLSBCell(ncell, o);
|
|
25450
26280
|
}
|
|
26281
|
+
function parse_BrtShortBlank(data) {
|
|
26282
|
+
var cell = parse_XLSBShortCell(data);
|
|
26283
|
+
return [cell];
|
|
26284
|
+
}
|
|
26285
|
+
function write_BrtShortBlank(cell, ncell, o) {
|
|
26286
|
+
if (o == null)
|
|
26287
|
+
o = new_buf(4);
|
|
26288
|
+
return write_XLSBShortCell(ncell, o);
|
|
26289
|
+
}
|
|
25451
26290
|
function parse_BrtCellBool(data) {
|
|
25452
26291
|
var cell = parse_XLSBCell(data);
|
|
25453
26292
|
var fBool = data.read_shift(1);
|
|
@@ -25460,11 +26299,44 @@
|
|
|
25460
26299
|
o.write_shift(1, cell.v ? 1 : 0);
|
|
25461
26300
|
return o;
|
|
25462
26301
|
}
|
|
26302
|
+
function parse_BrtShortBool(data) {
|
|
26303
|
+
var cell = parse_XLSBShortCell(data);
|
|
26304
|
+
var fBool = data.read_shift(1);
|
|
26305
|
+
return [cell, fBool, "b"];
|
|
26306
|
+
}
|
|
26307
|
+
function write_BrtShortBool(cell, ncell, o) {
|
|
26308
|
+
if (o == null)
|
|
26309
|
+
o = new_buf(5);
|
|
26310
|
+
write_XLSBShortCell(ncell, o);
|
|
26311
|
+
o.write_shift(1, cell.v ? 1 : 0);
|
|
26312
|
+
return o;
|
|
26313
|
+
}
|
|
25463
26314
|
function parse_BrtCellError(data) {
|
|
25464
26315
|
var cell = parse_XLSBCell(data);
|
|
25465
26316
|
var bError = data.read_shift(1);
|
|
25466
26317
|
return [cell, bError, "e"];
|
|
25467
26318
|
}
|
|
26319
|
+
function write_BrtCellError(cell, ncell, o) {
|
|
26320
|
+
if (o == null)
|
|
26321
|
+
o = new_buf(9);
|
|
26322
|
+
write_XLSBCell(ncell, o);
|
|
26323
|
+
o.write_shift(1, cell.v);
|
|
26324
|
+
return o;
|
|
26325
|
+
}
|
|
26326
|
+
function parse_BrtShortError(data) {
|
|
26327
|
+
var cell = parse_XLSBShortCell(data);
|
|
26328
|
+
var bError = data.read_shift(1);
|
|
26329
|
+
return [cell, bError, "e"];
|
|
26330
|
+
}
|
|
26331
|
+
function write_BrtShortError(cell, ncell, o) {
|
|
26332
|
+
if (o == null)
|
|
26333
|
+
o = new_buf(8);
|
|
26334
|
+
write_XLSBShortCell(ncell, o);
|
|
26335
|
+
o.write_shift(1, cell.v);
|
|
26336
|
+
o.write_shift(2, 0);
|
|
26337
|
+
o.write_shift(1, 0);
|
|
26338
|
+
return o;
|
|
26339
|
+
}
|
|
25468
26340
|
function parse_BrtCellIsst(data) {
|
|
25469
26341
|
var cell = parse_XLSBCell(data);
|
|
25470
26342
|
var isst = data.read_shift(4);
|
|
@@ -25477,6 +26349,18 @@
|
|
|
25477
26349
|
o.write_shift(4, ncell.v);
|
|
25478
26350
|
return o;
|
|
25479
26351
|
}
|
|
26352
|
+
function parse_BrtShortIsst(data) {
|
|
26353
|
+
var cell = parse_XLSBShortCell(data);
|
|
26354
|
+
var isst = data.read_shift(4);
|
|
26355
|
+
return [cell, isst, "s"];
|
|
26356
|
+
}
|
|
26357
|
+
function write_BrtShortIsst(cell, ncell, o) {
|
|
26358
|
+
if (o == null)
|
|
26359
|
+
o = new_buf(8);
|
|
26360
|
+
write_XLSBShortCell(ncell, o);
|
|
26361
|
+
o.write_shift(4, ncell.v);
|
|
26362
|
+
return o;
|
|
26363
|
+
}
|
|
25480
26364
|
function parse_BrtCellReal(data) {
|
|
25481
26365
|
var cell = parse_XLSBCell(data);
|
|
25482
26366
|
var value = parse_Xnum(data);
|
|
@@ -25489,6 +26373,18 @@
|
|
|
25489
26373
|
write_Xnum(cell.v, o);
|
|
25490
26374
|
return o;
|
|
25491
26375
|
}
|
|
26376
|
+
function parse_BrtShortReal(data) {
|
|
26377
|
+
var cell = parse_XLSBShortCell(data);
|
|
26378
|
+
var value = parse_Xnum(data);
|
|
26379
|
+
return [cell, value, "n"];
|
|
26380
|
+
}
|
|
26381
|
+
function write_BrtShortReal(cell, ncell, o) {
|
|
26382
|
+
if (o == null)
|
|
26383
|
+
o = new_buf(12);
|
|
26384
|
+
write_XLSBShortCell(ncell, o);
|
|
26385
|
+
write_Xnum(cell.v, o);
|
|
26386
|
+
return o;
|
|
26387
|
+
}
|
|
25492
26388
|
function parse_BrtCellRk(data) {
|
|
25493
26389
|
var cell = parse_XLSBCell(data);
|
|
25494
26390
|
var value = parse_RkNumber(data);
|
|
@@ -25501,6 +26397,18 @@
|
|
|
25501
26397
|
write_RkNumber(cell.v, o);
|
|
25502
26398
|
return o;
|
|
25503
26399
|
}
|
|
26400
|
+
function parse_BrtShortRk(data) {
|
|
26401
|
+
var cell = parse_XLSBShortCell(data);
|
|
26402
|
+
var value = parse_RkNumber(data);
|
|
26403
|
+
return [cell, value, "n"];
|
|
26404
|
+
}
|
|
26405
|
+
function write_BrtShortRk(cell, ncell, o) {
|
|
26406
|
+
if (o == null)
|
|
26407
|
+
o = new_buf(8);
|
|
26408
|
+
write_XLSBShortCell(ncell, o);
|
|
26409
|
+
write_RkNumber(cell.v, o);
|
|
26410
|
+
return o;
|
|
26411
|
+
}
|
|
25504
26412
|
function parse_BrtCellSt(data) {
|
|
25505
26413
|
var cell = parse_XLSBCell(data);
|
|
25506
26414
|
var value = parse_XLWideString(data);
|
|
@@ -25513,6 +26421,18 @@
|
|
|
25513
26421
|
write_XLWideString(cell.v, o);
|
|
25514
26422
|
return o.length > o.l ? o.slice(0, o.l) : o;
|
|
25515
26423
|
}
|
|
26424
|
+
function parse_BrtShortSt(data) {
|
|
26425
|
+
var cell = parse_XLSBShortCell(data);
|
|
26426
|
+
var value = parse_XLWideString(data);
|
|
26427
|
+
return [cell, value, "str"];
|
|
26428
|
+
}
|
|
26429
|
+
function write_BrtShortSt(cell, ncell, o) {
|
|
26430
|
+
if (o == null)
|
|
26431
|
+
o = new_buf(8 + 4 * cell.v.length);
|
|
26432
|
+
write_XLSBShortCell(ncell, o);
|
|
26433
|
+
write_XLWideString(cell.v, o);
|
|
26434
|
+
return o.length > o.l ? o.slice(0, o.l) : o;
|
|
26435
|
+
}
|
|
25516
26436
|
function parse_BrtFmlaBool(data, length, opts) {
|
|
25517
26437
|
var end = data.l + length;
|
|
25518
26438
|
var cell = parse_XLSBCell(data);
|
|
@@ -25762,6 +26682,7 @@
|
|
|
25762
26682
|
}
|
|
25763
26683
|
var colinfo = [], rowinfo = [];
|
|
25764
26684
|
var seencol = false;
|
|
26685
|
+
XLSBRecordEnum[16] = { n: "BrtShortReal", f: parse_BrtShortReal };
|
|
25765
26686
|
recordhopper(data, function ws_parse(val, R_n, RT) {
|
|
25766
26687
|
if (end)
|
|
25767
26688
|
return;
|
|
@@ -25791,6 +26712,12 @@
|
|
|
25791
26712
|
case 9:
|
|
25792
26713
|
case 10:
|
|
25793
26714
|
case 11:
|
|
26715
|
+
case 13:
|
|
26716
|
+
case 14:
|
|
26717
|
+
case 15:
|
|
26718
|
+
case 16:
|
|
26719
|
+
case 17:
|
|
26720
|
+
case 18:
|
|
25794
26721
|
p = { t: val[2] };
|
|
25795
26722
|
switch (val[2]) {
|
|
25796
26723
|
case "n":
|
|
@@ -25816,7 +26743,7 @@
|
|
|
25816
26743
|
}
|
|
25817
26744
|
if (cf = styles.CellXf[val[0].iStyleRef])
|
|
25818
26745
|
safe_format(p, cf.numFmtId, null, opts, themes, styles);
|
|
25819
|
-
C = val[0].c;
|
|
26746
|
+
C = val[0].c == -1 ? C + 1 : val[0].c;
|
|
25820
26747
|
if (opts.dense) {
|
|
25821
26748
|
if (!s[R])
|
|
25822
26749
|
s[R] = [];
|
|
@@ -25854,10 +26781,11 @@
|
|
|
25854
26781
|
}
|
|
25855
26782
|
break;
|
|
25856
26783
|
case 1:
|
|
26784
|
+
case 12:
|
|
25857
26785
|
if (!opts.sheetStubs || pass)
|
|
25858
26786
|
break;
|
|
25859
26787
|
p = { t: "z", v: void 0 };
|
|
25860
|
-
C = val[0].c;
|
|
26788
|
+
C = val[0].c == -1 ? C + 1 : val[0].c;
|
|
25861
26789
|
if (opts.dense) {
|
|
25862
26790
|
if (!s[R])
|
|
25863
26791
|
s[R] = [];
|
|
@@ -25940,6 +26868,8 @@
|
|
|
25940
26868
|
wb.Sheets[idx] = {};
|
|
25941
26869
|
if (val.name)
|
|
25942
26870
|
wb.Sheets[idx].CodeName = val.name;
|
|
26871
|
+
if (val.above || val.left)
|
|
26872
|
+
s["!outline"] = { above: val.above, left: val.left };
|
|
25943
26873
|
break;
|
|
25944
26874
|
case 137:
|
|
25945
26875
|
if (!wb.Views)
|
|
@@ -25956,6 +26886,7 @@
|
|
|
25956
26886
|
break;
|
|
25957
26887
|
case 151:
|
|
25958
26888
|
break;
|
|
26889
|
+
case 152:
|
|
25959
26890
|
case 175:
|
|
25960
26891
|
case 644:
|
|
25961
26892
|
case 625:
|
|
@@ -25995,7 +26926,6 @@
|
|
|
25995
26926
|
case 680:
|
|
25996
26927
|
case 1104:
|
|
25997
26928
|
case 1024:
|
|
25998
|
-
case 152:
|
|
25999
26929
|
case 663:
|
|
26000
26930
|
case 535:
|
|
26001
26931
|
case 678:
|
|
@@ -26057,9 +26987,9 @@
|
|
|
26057
26987
|
s["!rows"] = rowinfo;
|
|
26058
26988
|
return s;
|
|
26059
26989
|
}
|
|
26060
|
-
function write_ws_bin_cell(ba, cell, R, C, opts, ws) {
|
|
26990
|
+
function write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen) {
|
|
26061
26991
|
if (cell.v === void 0)
|
|
26062
|
-
return;
|
|
26992
|
+
return false;
|
|
26063
26993
|
var vv = "";
|
|
26064
26994
|
switch (cell.t) {
|
|
26065
26995
|
case "b":
|
|
@@ -26092,27 +27022,51 @@
|
|
|
26092
27022
|
vv = get_sst_id(opts.Strings, cell.v, opts.revStrings);
|
|
26093
27023
|
o.t = "s";
|
|
26094
27024
|
o.v = vv;
|
|
26095
|
-
|
|
27025
|
+
if (last_seen)
|
|
27026
|
+
write_record(ba, "BrtShortIsst", write_BrtShortIsst(cell, o));
|
|
27027
|
+
else
|
|
27028
|
+
write_record(ba, "BrtCellIsst", write_BrtCellIsst(cell, o));
|
|
26096
27029
|
} else {
|
|
26097
27030
|
o.t = "str";
|
|
26098
|
-
|
|
27031
|
+
if (last_seen)
|
|
27032
|
+
write_record(ba, "BrtShortSt", write_BrtShortSt(cell, o));
|
|
27033
|
+
else
|
|
27034
|
+
write_record(ba, "BrtCellSt", write_BrtCellSt(cell, o));
|
|
26099
27035
|
}
|
|
26100
|
-
return;
|
|
27036
|
+
return true;
|
|
26101
27037
|
case "n":
|
|
26102
|
-
if (cell.v == (cell.v | 0) && cell.v > -1e3 && cell.v < 1e3)
|
|
26103
|
-
|
|
26104
|
-
|
|
26105
|
-
|
|
26106
|
-
|
|
27038
|
+
if (cell.v == (cell.v | 0) && cell.v > -1e3 && cell.v < 1e3) {
|
|
27039
|
+
if (last_seen)
|
|
27040
|
+
write_record(ba, "BrtShortRk", write_BrtShortRk(cell, o));
|
|
27041
|
+
else
|
|
27042
|
+
write_record(ba, "BrtCellRk", write_BrtCellRk(cell, o));
|
|
27043
|
+
} else {
|
|
27044
|
+
if (last_seen)
|
|
27045
|
+
write_record(ba, "BrtShortReal", write_BrtShortReal(cell, o));
|
|
27046
|
+
else
|
|
27047
|
+
write_record(ba, "BrtCellReal", write_BrtCellReal(cell, o));
|
|
27048
|
+
}
|
|
27049
|
+
return true;
|
|
26107
27050
|
case "b":
|
|
26108
27051
|
o.t = "b";
|
|
26109
|
-
|
|
26110
|
-
|
|
27052
|
+
if (last_seen)
|
|
27053
|
+
write_record(ba, "BrtShortBool", write_BrtShortBool(cell, o));
|
|
27054
|
+
else
|
|
27055
|
+
write_record(ba, "BrtCellBool", write_BrtCellBool(cell, o));
|
|
27056
|
+
return true;
|
|
26111
27057
|
case "e":
|
|
26112
27058
|
o.t = "e";
|
|
26113
|
-
|
|
27059
|
+
if (last_seen)
|
|
27060
|
+
write_record(ba, "BrtShortError", write_BrtShortError(cell, o));
|
|
27061
|
+
else
|
|
27062
|
+
write_record(ba, "BrtCellError", write_BrtCellError(cell, o));
|
|
27063
|
+
return true;
|
|
26114
27064
|
}
|
|
26115
|
-
|
|
27065
|
+
if (last_seen)
|
|
27066
|
+
write_record(ba, "BrtShortBlank", write_BrtShortBlank(cell, o));
|
|
27067
|
+
else
|
|
27068
|
+
write_record(ba, "BrtCellBlank", write_BrtCellBlank(cell, o));
|
|
27069
|
+
return true;
|
|
26116
27070
|
}
|
|
26117
27071
|
function write_CELLTABLE(ba, ws, idx, opts) {
|
|
26118
27072
|
var range = safe_decode_range(ws["!ref"] || "A1"), ref, rr = "", cols = [];
|
|
@@ -26124,15 +27078,18 @@
|
|
|
26124
27078
|
for (var R = range.s.r; R <= cap; ++R) {
|
|
26125
27079
|
rr = encode_row(R);
|
|
26126
27080
|
write_row_header(ba, ws, range, R);
|
|
27081
|
+
var last_seen = false;
|
|
26127
27082
|
if (R <= range.e.r)
|
|
26128
27083
|
for (var C = range.s.c; C <= range.e.c; ++C) {
|
|
26129
27084
|
if (R === range.s.r)
|
|
26130
27085
|
cols[C] = encode_col(C);
|
|
26131
27086
|
ref = cols[C] + rr;
|
|
26132
27087
|
var cell = dense ? (ws[R] || [])[C] : ws[ref];
|
|
26133
|
-
if (!cell)
|
|
27088
|
+
if (!cell) {
|
|
27089
|
+
last_seen = false;
|
|
26134
27090
|
continue;
|
|
26135
|
-
|
|
27091
|
+
}
|
|
27092
|
+
last_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);
|
|
26136
27093
|
}
|
|
26137
27094
|
}
|
|
26138
27095
|
write_record(ba, "BrtEndSheetData");
|
|
@@ -26242,8 +27199,8 @@
|
|
|
26242
27199
|
ws["!links"] = [];
|
|
26243
27200
|
ws["!comments"] = [];
|
|
26244
27201
|
write_record(ba, "BrtBeginSheet");
|
|
26245
|
-
if (wb.vbaraw)
|
|
26246
|
-
write_record(ba, "BrtWsProp", write_BrtWsProp(c));
|
|
27202
|
+
if (wb.vbaraw || ws["!outline"])
|
|
27203
|
+
write_record(ba, "BrtWsProp", write_BrtWsProp(c, ws["!outline"]));
|
|
26247
27204
|
write_record(ba, "BrtWsDim", write_BrtWsDim(r));
|
|
26248
27205
|
write_WSVIEWS2(ba, ws, wb.Workbook);
|
|
26249
27206
|
write_WSFMTINFO(ba, ws);
|
|
@@ -26908,6 +27865,7 @@
|
|
|
26908
27865
|
var supbooks = [[]];
|
|
26909
27866
|
supbooks.SheetNames = [];
|
|
26910
27867
|
supbooks.XTI = [];
|
|
27868
|
+
XLSBRecordEnum[16] = { n: "BrtFRTArchID$", f: parse_BrtFRTArchID$ };
|
|
26911
27869
|
recordhopper(data, function hopper_wb(val, R_n, RT) {
|
|
26912
27870
|
switch (RT) {
|
|
26913
27871
|
case 156:
|
|
@@ -26947,12 +27905,16 @@
|
|
|
26947
27905
|
break;
|
|
26948
27906
|
case 361:
|
|
26949
27907
|
break;
|
|
27908
|
+
case 2071:
|
|
27909
|
+
case 158:
|
|
27910
|
+
case 143:
|
|
27911
|
+
case 664:
|
|
27912
|
+
case 353:
|
|
27913
|
+
break;
|
|
26950
27914
|
case 3072:
|
|
26951
27915
|
case 3073:
|
|
26952
|
-
case 2071:
|
|
26953
27916
|
case 534:
|
|
26954
27917
|
case 677:
|
|
26955
|
-
case 158:
|
|
26956
27918
|
case 157:
|
|
26957
27919
|
case 610:
|
|
26958
27920
|
case 2050:
|
|
@@ -27023,7 +27985,6 @@
|
|
|
27023
27985
|
write_XLWideString(XLSX2.version, o);
|
|
27024
27986
|
write_XLWideString(XLSX2.version, o);
|
|
27025
27987
|
write_XLWideString("7262", o);
|
|
27026
|
-
o.length = o.l;
|
|
27027
27988
|
return o.length > o.l ? o.slice(0, o.l) : o;
|
|
27028
27989
|
}
|
|
27029
27990
|
function write_BrtBookView(idx, o) {
|
|
@@ -27383,6 +28344,12 @@
|
|
|
27383
28344
|
str = utf8read(str);
|
|
27384
28345
|
}
|
|
27385
28346
|
var opening = str.slice(0, 1024).toLowerCase(), ishtml = false;
|
|
28347
|
+
opening = opening.replace(/".*?"/g, "");
|
|
28348
|
+
if ((opening.indexOf(">") & 1023) > Math.min(opening.indexOf(",") & 1023, opening.indexOf(";") & 1023)) {
|
|
28349
|
+
var _o = dup(opts);
|
|
28350
|
+
_o.type = "string";
|
|
28351
|
+
return PRN.to_workbook(str, _o);
|
|
28352
|
+
}
|
|
27386
28353
|
if (opening.indexOf("<?xml") == -1)
|
|
27387
28354
|
["html", "table", "head", "meta", "script", "style", "div"].forEach(function(tag) {
|
|
27388
28355
|
if (opening.indexOf("<" + tag) >= 0)
|
|
@@ -27445,7 +28412,7 @@
|
|
|
27445
28412
|
cursheet[encode_col(c) + encode_row(r)] = cell;
|
|
27446
28413
|
}
|
|
27447
28414
|
if (cell.HRef) {
|
|
27448
|
-
cell.l = { Target: cell.HRef };
|
|
28415
|
+
cell.l = { Target: unescapexml(cell.HRef) };
|
|
27449
28416
|
if (cell.HRefScreenTip)
|
|
27450
28417
|
cell.l.Tooltip = cell.HRefScreenTip;
|
|
27451
28418
|
delete cell.HRef;
|
|
@@ -27763,6 +28730,8 @@
|
|
|
27763
28730
|
} else if (Rn[0].charAt(Rn[0].length - 2) !== "/")
|
|
27764
28731
|
state.push([Rn[3], true]);
|
|
27765
28732
|
break;
|
|
28733
|
+
case "null":
|
|
28734
|
+
break;
|
|
27766
28735
|
default:
|
|
27767
28736
|
if (state.length == 0 && Rn[3] == "document")
|
|
27768
28737
|
return parse_fods(str, opts);
|
|
@@ -27996,6 +28965,8 @@
|
|
|
27996
28965
|
break;
|
|
27997
28966
|
case "print":
|
|
27998
28967
|
break;
|
|
28968
|
+
case "printerrors":
|
|
28969
|
+
break;
|
|
27999
28970
|
case "panes":
|
|
28000
28971
|
break;
|
|
28001
28972
|
case "scale":
|
|
@@ -28075,6 +29046,9 @@
|
|
|
28075
29046
|
case "allowsizerows":
|
|
28076
29047
|
break;
|
|
28077
29048
|
case "nosummaryrowsbelowdetail":
|
|
29049
|
+
if (!cursheet["!outline"])
|
|
29050
|
+
cursheet["!outline"] = {};
|
|
29051
|
+
cursheet["!outline"].above = true;
|
|
28078
29052
|
break;
|
|
28079
29053
|
case "tabcolorindex":
|
|
28080
29054
|
break;
|
|
@@ -28083,6 +29057,9 @@
|
|
|
28083
29057
|
case "showpagelayoutzoom":
|
|
28084
29058
|
break;
|
|
28085
29059
|
case "nosummarycolumnsrightdetail":
|
|
29060
|
+
if (!cursheet["!outline"])
|
|
29061
|
+
cursheet["!outline"] = {};
|
|
29062
|
+
cursheet["!outline"].left = true;
|
|
28086
29063
|
break;
|
|
28087
29064
|
case "blackandwhite":
|
|
28088
29065
|
break;
|
|
@@ -28896,7 +29873,7 @@
|
|
|
28896
29873
|
} else
|
|
28897
29874
|
p.w = SSF._general(p.v);
|
|
28898
29875
|
} else
|
|
28899
|
-
p.w = SSF.format(fmtid, p.v, { date1904: !!date1904 });
|
|
29876
|
+
p.w = SSF.format(fmtid, p.v, { date1904: !!date1904, dateNF: opts && opts.dateNF });
|
|
28900
29877
|
} catch (e) {
|
|
28901
29878
|
if (opts.WTF)
|
|
28902
29879
|
throw e;
|
|
@@ -28929,7 +29906,6 @@
|
|
|
28929
29906
|
var arrayf = [];
|
|
28930
29907
|
var temp_val;
|
|
28931
29908
|
var country;
|
|
28932
|
-
var cell_valid = true;
|
|
28933
29909
|
var XFs = [];
|
|
28934
29910
|
var palette = [];
|
|
28935
29911
|
var Workbook = { Sheets: [], WBProps: { date1904: false }, Views: [{}] }, wsprops = {};
|
|
@@ -28958,8 +29934,6 @@
|
|
|
28958
29934
|
if (file_depth > 1)
|
|
28959
29935
|
return;
|
|
28960
29936
|
if (options2.sheetRows && cell.r >= options2.sheetRows)
|
|
28961
|
-
cell_valid = false;
|
|
28962
|
-
if (!cell_valid)
|
|
28963
29937
|
return;
|
|
28964
29938
|
if (options2.cellStyles && line.XF && line.XF.data)
|
|
28965
29939
|
process_cell_style(cell, line, options2);
|
|
@@ -29140,6 +30114,10 @@
|
|
|
29140
30114
|
case "WsBool":
|
|
29141
30115
|
if (val.fDialog)
|
|
29142
30116
|
out["!type"] = "dialog";
|
|
30117
|
+
if (!val.fBelow)
|
|
30118
|
+
(out["!outline"] || (out["!outline"] = {})).above = true;
|
|
30119
|
+
if (!val.fRight)
|
|
30120
|
+
(out["!outline"] || (out["!outline"] = {})).left = true;
|
|
29143
30121
|
break;
|
|
29144
30122
|
case "XF":
|
|
29145
30123
|
XFs.push(val);
|
|
@@ -29264,17 +30242,22 @@
|
|
|
29264
30242
|
2: 2,
|
|
29265
30243
|
7: 2
|
|
29266
30244
|
}[val.BIFFVer] || 8;
|
|
30245
|
+
opts.biffguess = val.BIFFVer == 0;
|
|
30246
|
+
if (val.BIFFVer == 0 && val.dt == 4096) {
|
|
30247
|
+
opts.biff = 5;
|
|
30248
|
+
seen_codepage = true;
|
|
30249
|
+
set_cp(opts.codepage = 28591);
|
|
30250
|
+
}
|
|
29267
30251
|
if (opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16)
|
|
29268
30252
|
opts.biff = 2;
|
|
29269
30253
|
if (file_depth++)
|
|
29270
30254
|
break;
|
|
29271
|
-
cell_valid = true;
|
|
29272
30255
|
out = options.dense ? [] : {};
|
|
29273
30256
|
if (opts.biff < 8 && !seen_codepage) {
|
|
29274
30257
|
seen_codepage = true;
|
|
29275
30258
|
set_cp(opts.codepage = options.codepage || 1252);
|
|
29276
30259
|
}
|
|
29277
|
-
if (opts.biff < 5) {
|
|
30260
|
+
if (opts.biff < 5 || val.BIFFVer == 0 && val.dt == 4096) {
|
|
29278
30261
|
if (cur_sheet === "")
|
|
29279
30262
|
cur_sheet = "Sheet1";
|
|
29280
30263
|
range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };
|
|
@@ -29307,7 +30290,7 @@
|
|
|
29307
30290
|
}
|
|
29308
30291
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe] || {}, v: val.val, t: "n" };
|
|
29309
30292
|
if (BIFF2Fmt > 0)
|
|
29310
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30293
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29311
30294
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29312
30295
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29313
30296
|
}
|
|
@@ -29316,7 +30299,7 @@
|
|
|
29316
30299
|
{
|
|
29317
30300
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe], v: val.val, t: val.t };
|
|
29318
30301
|
if (BIFF2Fmt > 0)
|
|
29319
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30302
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29320
30303
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29321
30304
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29322
30305
|
}
|
|
@@ -29325,7 +30308,7 @@
|
|
|
29325
30308
|
{
|
|
29326
30309
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe], v: val.rknum, t: "n" };
|
|
29327
30310
|
if (BIFF2Fmt > 0)
|
|
29328
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30311
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29329
30312
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29330
30313
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29331
30314
|
}
|
|
@@ -29336,7 +30319,7 @@
|
|
|
29336
30319
|
var ixfe = val.rkrec[j - val.c][0];
|
|
29337
30320
|
temp_val = { ixfe, XF: XFs[ixfe], v: val.rkrec[j - val.c][1], t: "n" };
|
|
29338
30321
|
if (BIFF2Fmt > 0)
|
|
29339
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30322
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29340
30323
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29341
30324
|
addcell({ c: j, r: val.r }, temp_val, options);
|
|
29342
30325
|
}
|
|
@@ -29363,7 +30346,7 @@
|
|
|
29363
30346
|
temp_val.f = "" + stringify_formula(val.formula, range, val.cell, supbooks, opts);
|
|
29364
30347
|
}
|
|
29365
30348
|
if (BIFF2Fmt > 0)
|
|
29366
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30349
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29367
30350
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29368
30351
|
addcell(val.cell, temp_val, options);
|
|
29369
30352
|
last_formula = val;
|
|
@@ -29379,7 +30362,7 @@
|
|
|
29379
30362
|
temp_val.f = "" + stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);
|
|
29380
30363
|
}
|
|
29381
30364
|
if (BIFF2Fmt > 0)
|
|
29382
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30365
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29383
30366
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29384
30367
|
addcell(last_formula.cell, temp_val, options);
|
|
29385
30368
|
last_formula = null;
|
|
@@ -29404,8 +30387,6 @@
|
|
|
29404
30387
|
break;
|
|
29405
30388
|
case "ShrFmla":
|
|
29406
30389
|
{
|
|
29407
|
-
if (!cell_valid)
|
|
29408
|
-
break;
|
|
29409
30390
|
if (!options.cellFormula)
|
|
29410
30391
|
break;
|
|
29411
30392
|
if (last_cell) {
|
|
@@ -29423,7 +30404,7 @@
|
|
|
29423
30404
|
temp_val.h = sst[val.isst].h;
|
|
29424
30405
|
temp_val.XF = XFs[temp_val.ixfe];
|
|
29425
30406
|
if (BIFF2Fmt > 0)
|
|
29426
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30407
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29427
30408
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29428
30409
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29429
30410
|
break;
|
|
@@ -29431,7 +30412,7 @@
|
|
|
29431
30412
|
if (options.sheetStubs) {
|
|
29432
30413
|
temp_val = { ixfe: val.ixfe, XF: XFs[val.ixfe], t: "z" };
|
|
29433
30414
|
if (BIFF2Fmt > 0)
|
|
29434
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30415
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29435
30416
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29436
30417
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29437
30418
|
}
|
|
@@ -29442,7 +30423,7 @@
|
|
|
29442
30423
|
var _ixfe = val.ixfe[_j - val.c];
|
|
29443
30424
|
temp_val = { ixfe: _ixfe, XF: XFs[_ixfe], t: "z" };
|
|
29444
30425
|
if (BIFF2Fmt > 0)
|
|
29445
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30426
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29446
30427
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29447
30428
|
addcell({ c: _j, r: val.r }, temp_val, options);
|
|
29448
30429
|
}
|
|
@@ -29454,7 +30435,7 @@
|
|
|
29454
30435
|
temp_val = make_cell(val.val, val.ixfe, "s");
|
|
29455
30436
|
temp_val.XF = XFs[temp_val.ixfe];
|
|
29456
30437
|
if (BIFF2Fmt > 0)
|
|
29457
|
-
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 &
|
|
30438
|
+
temp_val.z = BIFF2FmtTable[temp_val.ixfe >> 8 & 63];
|
|
29458
30439
|
safe_format_xf(temp_val, options, wb.opts.Date1904);
|
|
29459
30440
|
addcell({ c: val.c, r: val.r }, temp_val, options);
|
|
29460
30441
|
break;
|
|
@@ -29567,7 +30548,7 @@
|
|
|
29567
30548
|
if (!opts.cellStyles)
|
|
29568
30549
|
break;
|
|
29569
30550
|
while (val.e >= val.s) {
|
|
29570
|
-
colinfo[val.e--] = { width: val.w / 256 };
|
|
30551
|
+
colinfo[val.e--] = { width: val.w / 256, level: val.level || 0, hidden: !!(val.flags & 1) };
|
|
29571
30552
|
if (!seencol) {
|
|
29572
30553
|
seencol = true;
|
|
29573
30554
|
find_mdw_colw(val.w / 256);
|
|
@@ -29602,6 +30583,8 @@
|
|
|
29602
30583
|
default_margins(out["!margins"] = {});
|
|
29603
30584
|
out["!margins"][Rn.slice(0, -6).toLowerCase()] = val;
|
|
29604
30585
|
break;
|
|
30586
|
+
case "Selection":
|
|
30587
|
+
break;
|
|
29605
30588
|
case "Setup":
|
|
29606
30589
|
if (!out["!margins"])
|
|
29607
30590
|
default_margins(out["!margins"] = {});
|
|
@@ -29654,8 +30637,6 @@
|
|
|
29654
30637
|
break;
|
|
29655
30638
|
case "QsiSXTag":
|
|
29656
30639
|
break;
|
|
29657
|
-
case "Selection":
|
|
29658
|
-
break;
|
|
29659
30640
|
case "Feat":
|
|
29660
30641
|
break;
|
|
29661
30642
|
case "FeatHdr":
|
|
@@ -29997,6 +30978,8 @@
|
|
|
29997
30978
|
case "BIFF3XF":
|
|
29998
30979
|
case "BIFF4XF":
|
|
29999
30980
|
break;
|
|
30981
|
+
case "BIFF2XFINDEX":
|
|
30982
|
+
break;
|
|
30000
30983
|
case "BIFF4FMTCNT":
|
|
30001
30984
|
case "BIFF2ROW":
|
|
30002
30985
|
case "BIFF2WINDOW2":
|
|
@@ -30047,11 +31030,16 @@
|
|
|
30047
31030
|
});
|
|
30048
31031
|
if (!options.bookSheets)
|
|
30049
31032
|
wb.Sheets = Sheets;
|
|
31033
|
+
if (!wb.SheetNames.length && Preamble["!ref"]) {
|
|
31034
|
+
wb.SheetNames.push("Sheet1");
|
|
31035
|
+
if (wb.Sheets)
|
|
31036
|
+
wb.Sheets["Sheet1"] = Preamble;
|
|
31037
|
+
} else
|
|
31038
|
+
wb.Preamble = Preamble;
|
|
30050
31039
|
if (wb.Sheets)
|
|
30051
31040
|
FilterDatabases.forEach(function(r, i2) {
|
|
30052
31041
|
wb.Sheets[wb.SheetNames[i2]]["!autofilter"] = r;
|
|
30053
31042
|
});
|
|
30054
|
-
wb.Preamble = Preamble;
|
|
30055
31043
|
wb.Strings = sst;
|
|
30056
31044
|
wb.SSF = SSF.get_table();
|
|
30057
31045
|
if (opts.enc)
|
|
@@ -30171,6 +31159,8 @@
|
|
|
30171
31159
|
WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));
|
|
30172
31160
|
else if ((_data = CFB.find(cfb, "NativeContent_MAIN")) && _data.content)
|
|
30173
31161
|
WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));
|
|
31162
|
+
else if ((_data = CFB.find(cfb, "MN0")) && _data.content)
|
|
31163
|
+
throw new Error("Unsupported Works 4 for Mac file");
|
|
30174
31164
|
else
|
|
30175
31165
|
throw new Error("Cannot find Workbook stream");
|
|
30176
31166
|
if (options.bookVBA && cfb.FullPaths && CFB.find(cfb, "/_VBA_PROJECT_CUR/VBA/dir"))
|
|
@@ -30225,7 +31215,13 @@
|
|
|
30225
31215
|
9: { n: "BrtFmlaNum", f: parse_BrtFmlaNum },
|
|
30226
31216
|
10: { n: "BrtFmlaBool", f: parse_BrtFmlaBool },
|
|
30227
31217
|
11: { n: "BrtFmlaError", f: parse_BrtFmlaError },
|
|
30228
|
-
|
|
31218
|
+
12: { n: "BrtShortBlank", f: parse_BrtShortBlank },
|
|
31219
|
+
13: { n: "BrtShortRk", f: parse_BrtShortRk },
|
|
31220
|
+
14: { n: "BrtShortError", f: parse_BrtShortError },
|
|
31221
|
+
15: { n: "BrtShortBool", f: parse_BrtShortBool },
|
|
31222
|
+
16: { n: "BrtShortReal", f: parse_BrtShortReal },
|
|
31223
|
+
17: { n: "BrtShortSt", f: parse_BrtShortSt },
|
|
31224
|
+
18: { n: "BrtShortIsst", f: parse_BrtShortIsst },
|
|
30229
31225
|
19: { n: "BrtSSTItem", f: parse_RichStr },
|
|
30230
31226
|
20: { n: "BrtPCDIMissing" },
|
|
30231
31227
|
21: { n: "BrtPCDINumber" },
|
|
@@ -31048,11 +32044,9 @@
|
|
|
31048
32044
|
65535: { n: "" }
|
|
31049
32045
|
};
|
|
31050
32046
|
var XLSBRE = evert_key(XLSBRecordEnum, "n");
|
|
32047
|
+
XLSBRE["BrtFRTArchID$"] = 16;
|
|
31051
32048
|
var XLSRecordEnum = {
|
|
31052
|
-
3: { n: "BIFF2NUM", f: parse_BIFF2NUM },
|
|
31053
|
-
4: { n: "BIFF2STR", f: parse_BIFF2STR },
|
|
31054
32049
|
6: { n: "Formula", f: parse_Formula },
|
|
31055
|
-
9: { n: "BOF", f: parse_BOF },
|
|
31056
32050
|
10: { n: "EOF", f: parsenoop2 },
|
|
31057
32051
|
12: { n: "CalcCount", f: parseuint16 },
|
|
31058
32052
|
13: { n: "CalcMode", f: parseuint16 },
|
|
@@ -31073,7 +32067,6 @@
|
|
|
31073
32067
|
29: { n: "Selection" },
|
|
31074
32068
|
34: { n: "Date1904", f: parsebool },
|
|
31075
32069
|
35: { n: "ExternName", f: parse_ExternName },
|
|
31076
|
-
36: { n: "COLWIDTH" },
|
|
31077
32070
|
38: { n: "LeftMargin", f: parse_Xnum },
|
|
31078
32071
|
39: { n: "RightMargin", f: parse_Xnum },
|
|
31079
32072
|
40: { n: "TopMargin", f: parse_Xnum },
|
|
@@ -31243,7 +32236,6 @@
|
|
|
31243
32236
|
515: { n: "Number", f: parse_Number },
|
|
31244
32237
|
516: { n: "Label", f: parse_Label },
|
|
31245
32238
|
517: { n: "BoolErr", f: parse_BoolErr },
|
|
31246
|
-
518: { n: "Formula", f: parse_Formula },
|
|
31247
32239
|
519: { n: "String", f: parse_String },
|
|
31248
32240
|
520: { n: "Row", f: parse_Row },
|
|
31249
32241
|
523: { n: "Index" },
|
|
@@ -31253,7 +32245,6 @@
|
|
|
31253
32245
|
574: { n: "Window2", f: parse_Window2 },
|
|
31254
32246
|
638: { n: "RK", f: parse_RK },
|
|
31255
32247
|
659: { n: "Style" },
|
|
31256
|
-
1030: { n: "Formula", f: parse_Formula },
|
|
31257
32248
|
1048: { n: "BigName" },
|
|
31258
32249
|
1054: { n: "Format", f: parse_Format },
|
|
31259
32250
|
1084: { n: "ContinueBigName" },
|
|
@@ -31409,21 +32400,27 @@
|
|
|
31409
32400
|
4199: { n: "BopPopCustom" },
|
|
31410
32401
|
4200: { n: "Fbi2" },
|
|
31411
32402
|
0: { n: "Dimensions", f: parse_Dimensions },
|
|
32403
|
+
1: { n: "BIFF2BLANK" },
|
|
31412
32404
|
2: { n: "BIFF2INT", f: parse_BIFF2INT },
|
|
32405
|
+
3: { n: "BIFF2NUM", f: parse_BIFF2NUM },
|
|
32406
|
+
4: { n: "BIFF2STR", f: parse_BIFF2STR },
|
|
31413
32407
|
5: { n: "BoolErr", f: parse_BoolErr },
|
|
31414
32408
|
7: { n: "String", f: parse_BIFF2STRING },
|
|
31415
32409
|
8: { n: "BIFF2ROW" },
|
|
32410
|
+
9: { n: "BOF", f: parse_BOF },
|
|
31416
32411
|
11: { n: "Index" },
|
|
31417
32412
|
22: { n: "ExternCount", f: parseuint16 },
|
|
31418
32413
|
30: { n: "BIFF2FORMAT", f: parse_BIFF2Format },
|
|
31419
32414
|
31: { n: "BIFF2FMTCNT" },
|
|
31420
32415
|
32: { n: "BIFF2COLINFO" },
|
|
31421
32416
|
33: { n: "Array", f: parse_Array },
|
|
32417
|
+
36: { n: "COLWIDTH" },
|
|
31422
32418
|
37: { n: "DefaultRowHeight", f: parse_DefaultRowHeight },
|
|
31423
32419
|
50: { n: "BIFF2FONTXTRA", f: parse_BIFF2FONTXTRA },
|
|
31424
|
-
52: { n: "DDEObjName" },
|
|
31425
32420
|
62: { n: "BIFF2WINDOW2" },
|
|
32421
|
+
52: { n: "DDEObjName" },
|
|
31426
32422
|
67: { n: "BIFF2XF" },
|
|
32423
|
+
68: { n: "BIFF2XFINDEX", f: parseuint16 },
|
|
31427
32424
|
69: { n: "BIFF2FONTCLR" },
|
|
31428
32425
|
86: { n: "BIFF4FMTCNT" },
|
|
31429
32426
|
126: { n: "RK" },
|
|
@@ -31447,11 +32444,13 @@
|
|
|
31447
32444
|
234: { n: "TabIdConf" },
|
|
31448
32445
|
354: { n: "XL5Modify" },
|
|
31449
32446
|
421: { n: "FileSharing2" },
|
|
32447
|
+
518: { n: "Formula", f: parse_Formula },
|
|
31450
32448
|
521: { n: "BOF", f: parse_BOF },
|
|
31451
32449
|
536: { n: "Lbl", f: parse_Lbl },
|
|
31452
32450
|
547: { n: "ExternName", f: parse_ExternName },
|
|
31453
32451
|
561: { n: "Font" },
|
|
31454
32452
|
579: { n: "BIFF3XF" },
|
|
32453
|
+
1030: { n: "Formula", f: parse_Formula },
|
|
31455
32454
|
1033: { n: "BOF", f: parse_BOF },
|
|
31456
32455
|
1091: { n: "BIFF4XF" },
|
|
31457
32456
|
2157: { n: "FeatInfo" },
|
|
@@ -31474,7 +32473,7 @@
|
|
|
31474
32473
|
};
|
|
31475
32474
|
var XLSRE = evert_key(XLSRecordEnum, "n");
|
|
31476
32475
|
function write_biff_rec(ba, type, payload, length) {
|
|
31477
|
-
var t = +type || +XLSRE[type];
|
|
32476
|
+
var t = typeof type == "number" ? type : +type || +XLSRE[type];
|
|
31478
32477
|
if (isNaN(t))
|
|
31479
32478
|
return;
|
|
31480
32479
|
var len = length || (payload || []).length || 0;
|
|
@@ -31527,13 +32526,7 @@
|
|
|
31527
32526
|
function write_BIFF2BERR(r, c, val, t) {
|
|
31528
32527
|
var out = new_buf(9);
|
|
31529
32528
|
write_BIFF2Cell(out, r, c);
|
|
31530
|
-
|
|
31531
|
-
out.write_shift(1, val);
|
|
31532
|
-
out.write_shift(1, 1);
|
|
31533
|
-
} else {
|
|
31534
|
-
out.write_shift(1, val ? 1 : 0);
|
|
31535
|
-
out.write_shift(1, 0);
|
|
31536
|
-
}
|
|
32529
|
+
write_Bes(val, t || "b", out);
|
|
31537
32530
|
return out;
|
|
31538
32531
|
}
|
|
31539
32532
|
function write_BIFF2LABEL(r, c, val) {
|
|
@@ -31560,7 +32553,7 @@
|
|
|
31560
32553
|
return;
|
|
31561
32554
|
case "s":
|
|
31562
32555
|
case "str":
|
|
31563
|
-
write_biff_rec(ba, 4, write_BIFF2LABEL(R, C, cell.v));
|
|
32556
|
+
write_biff_rec(ba, 4, write_BIFF2LABEL(R, C, (cell.v || "").slice(0, 255)));
|
|
31564
32557
|
return;
|
|
31565
32558
|
}
|
|
31566
32559
|
write_biff_rec(ba, 1, write_BIFF2Cell(null, R, C));
|
|
@@ -31599,7 +32592,7 @@
|
|
|
31599
32592
|
idx = i2;
|
|
31600
32593
|
if (idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet)
|
|
31601
32594
|
throw new Error("Sheet not found: " + o.sheet);
|
|
31602
|
-
write_biff_rec(ba, 9, write_BOF(wb, 16, o));
|
|
32595
|
+
write_biff_rec(ba, o.biff == 4 ? 1033 : o.biff == 3 ? 521 : 9, write_BOF(wb, 16, o));
|
|
31603
32596
|
write_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);
|
|
31604
32597
|
write_biff_rec(ba, 10);
|
|
31605
32598
|
return ba.end();
|
|
@@ -31661,6 +32654,16 @@
|
|
|
31661
32654
|
}
|
|
31662
32655
|
delete ws["!links"];
|
|
31663
32656
|
}
|
|
32657
|
+
function write_ws_cols_biff8(ba, cols, ws) {
|
|
32658
|
+
if (!cols)
|
|
32659
|
+
return;
|
|
32660
|
+
var cnt = 0;
|
|
32661
|
+
cols.forEach(function(col, idx) {
|
|
32662
|
+
if (++cnt <= 256 && col) {
|
|
32663
|
+
write_biff_rec(ba, "ColInfo", write_ColInfo(col_obj_w(idx, col), idx));
|
|
32664
|
+
}
|
|
32665
|
+
});
|
|
32666
|
+
}
|
|
31664
32667
|
function write_ws_biff8_cell(ba, cell, R, C, opts) {
|
|
31665
32668
|
var os = 16 + get_cell_style(opts.cellXfs, cell, opts);
|
|
31666
32669
|
if (cell.v == null && !cell.bf) {
|
|
@@ -31686,7 +32689,7 @@
|
|
|
31686
32689
|
var isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);
|
|
31687
32690
|
write_biff_rec(ba, "LabelSst", write_LabelSst(R, C, isst, os, opts));
|
|
31688
32691
|
} else
|
|
31689
|
-
write_biff_rec(ba, "Label", write_Label(R, C, cell.v, os, opts));
|
|
32692
|
+
write_biff_rec(ba, "Label", write_Label(R, C, (cell.v || "").slice(0, 255), os, opts));
|
|
31690
32693
|
break;
|
|
31691
32694
|
default:
|
|
31692
32695
|
write_biff_rec(ba, "Blank", write_XLSCell(R, C, os));
|
|
@@ -31721,6 +32724,8 @@
|
|
|
31721
32724
|
write_biff_rec(ba, "Guts", write_Guts([0, 0]));
|
|
31722
32725
|
write_biff_rec(ba, "HCenter", writebool(false));
|
|
31723
32726
|
write_biff_rec(ba, "VCenter", writebool(false));
|
|
32727
|
+
if (b8)
|
|
32728
|
+
write_ws_cols_biff8(ba, ws["!cols"], ws);
|
|
31724
32729
|
write_biff_rec(ba, 512, write_Dimensions(range, opts));
|
|
31725
32730
|
if (b8)
|
|
31726
32731
|
ws["!links"] = [];
|
|
@@ -31858,6 +32863,15 @@
|
|
|
31858
32863
|
return __toBuffer([bufs]);
|
|
31859
32864
|
}
|
|
31860
32865
|
function write_biff_buf(wb, opts) {
|
|
32866
|
+
for (var i2 = 0; i2 <= wb.SheetNames.length; ++i2) {
|
|
32867
|
+
var ws = wb.Sheets[wb.SheetNames[i2]];
|
|
32868
|
+
if (!ws || !ws["!ref"])
|
|
32869
|
+
continue;
|
|
32870
|
+
var range = decode_range(ws["!ref"]);
|
|
32871
|
+
if (range.e.c > 255) {
|
|
32872
|
+
console.error("Worksheet '" + wb.SheetNames[i2] + "' extends beyond column IV (255). Data may be lost.");
|
|
32873
|
+
}
|
|
32874
|
+
}
|
|
31861
32875
|
var o = opts || {};
|
|
31862
32876
|
switch (o.biff || 2) {
|
|
31863
32877
|
case 8:
|
|
@@ -31919,7 +32933,7 @@
|
|
|
31919
32933
|
CS = tag.colspan ? +tag.colspan : 1;
|
|
31920
32934
|
if ((RS = +tag.rowspan) > 1 || CS > 1)
|
|
31921
32935
|
merges.push({ s: { r: R, c: C }, e: { r: R + (RS || 1) - 1, c: C + CS - 1 } });
|
|
31922
|
-
var _t = tag.t || "";
|
|
32936
|
+
var _t = tag.t || tag["data-t"] || "";
|
|
31923
32937
|
if (!m.length) {
|
|
31924
32938
|
C += CS;
|
|
31925
32939
|
continue;
|
|
@@ -31964,7 +32978,16 @@
|
|
|
31964
32978
|
return ws;
|
|
31965
32979
|
}
|
|
31966
32980
|
function html_to_book(str, opts) {
|
|
31967
|
-
|
|
32981
|
+
var mtch = str.match(/<table.*?>[\s\S]*?<\/table>/gi);
|
|
32982
|
+
if (!mtch || mtch.length == 0)
|
|
32983
|
+
throw new Error("Invalid HTML: could not find <table>");
|
|
32984
|
+
if (mtch.length == 1)
|
|
32985
|
+
return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);
|
|
32986
|
+
var wb = utils2.book_new();
|
|
32987
|
+
mtch.forEach(function(s, idx) {
|
|
32988
|
+
utils2.book_append_sheet(wb, html_to_sheet(s, opts), "Sheet" + (idx + 1));
|
|
32989
|
+
});
|
|
32990
|
+
return wb;
|
|
31968
32991
|
}
|
|
31969
32992
|
function make_html_row(ws, r, R, o) {
|
|
31970
32993
|
var M = ws["!merges"] || [];
|
|
@@ -31994,15 +33017,18 @@
|
|
|
31994
33017
|
sp.rowspan = RS;
|
|
31995
33018
|
if (CS > 1)
|
|
31996
33019
|
sp.colspan = CS;
|
|
31997
|
-
sp.t = cell && cell.t || "z";
|
|
31998
33020
|
if (o.editable)
|
|
31999
33021
|
w = '<span contenteditable="true">' + w + "</span>";
|
|
32000
|
-
|
|
32001
|
-
|
|
32002
|
-
|
|
33022
|
+
else if (cell) {
|
|
33023
|
+
sp["data-t"] = cell && cell.t || "z";
|
|
33024
|
+
if (cell.v != null)
|
|
33025
|
+
sp["data-v"] = cell.v;
|
|
32003
33026
|
if (cell.z != null)
|
|
32004
|
-
sp
|
|
33027
|
+
sp["data-z"] = cell.z;
|
|
33028
|
+
if (cell.l && (cell.l.Target || "#").charAt(0) != "#")
|
|
33029
|
+
w = '<a href="' + cell.l.Target + '">' + w + "</a>";
|
|
32005
33030
|
}
|
|
33031
|
+
sp.id = (o.id || "sjs") + "-" + coord;
|
|
32006
33032
|
oo.push(writextag("td", w, sp));
|
|
32007
33033
|
}
|
|
32008
33034
|
var preamble = "<tr>";
|
|
@@ -32080,8 +33106,8 @@
|
|
|
32080
33106
|
var elt = elts[_C];
|
|
32081
33107
|
if (opts.display && is_dom_element_hidden(elt))
|
|
32082
33108
|
continue;
|
|
32083
|
-
var v = elt.hasAttribute("v") ? elt.getAttribute("v") : htmldecode(elt.innerHTML);
|
|
32084
|
-
var z = elt.getAttribute("z");
|
|
33109
|
+
var v = elt.hasAttribute("data-v") ? elt.getAttribute("data-v") : elt.hasAttribute("v") ? elt.getAttribute("v") : htmldecode(elt.innerHTML);
|
|
33110
|
+
var z = elt.getAttribute("data-z") || elt.getAttribute("z");
|
|
32085
33111
|
for (midx = 0; midx < merges.length; ++midx) {
|
|
32086
33112
|
var m = merges[midx];
|
|
32087
33113
|
if (m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) {
|
|
@@ -32093,7 +33119,7 @@
|
|
|
32093
33119
|
if ((RS = +elt.getAttribute("rowspan") || 1) > 1 || CS > 1)
|
|
32094
33120
|
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 } });
|
|
32095
33121
|
var o = { t: "s", v };
|
|
32096
|
-
var _t = elt.getAttribute("t") || "";
|
|
33122
|
+
var _t = elt.getAttribute("data-t") || elt.getAttribute("t") || "";
|
|
32097
33123
|
if (v != null) {
|
|
32098
33124
|
if (v.length == 0)
|
|
32099
33125
|
o.t = _t || "z";
|
|
@@ -32113,6 +33139,17 @@
|
|
|
32113
33139
|
}
|
|
32114
33140
|
if (o.z === void 0 && z != null)
|
|
32115
33141
|
o.z = z;
|
|
33142
|
+
var l = "", Aelts = elt.getElementsByTagName("A");
|
|
33143
|
+
if (Aelts && Aelts.length) {
|
|
33144
|
+
for (var Aelti = 0; Aelti < Aelts.length; ++Aelti)
|
|
33145
|
+
if (Aelts[Aelti].hasAttribute("href")) {
|
|
33146
|
+
l = Aelts[Aelti].getAttribute("href");
|
|
33147
|
+
if (l.charAt(0) != "#")
|
|
33148
|
+
break;
|
|
33149
|
+
}
|
|
33150
|
+
}
|
|
33151
|
+
if (l && l.charAt(0) != "#")
|
|
33152
|
+
o.l = { Target: l };
|
|
32116
33153
|
if (opts.dense) {
|
|
32117
33154
|
if (!ws[R + or_R])
|
|
32118
33155
|
ws[R + or_R] = [];
|
|
@@ -32306,6 +33343,9 @@
|
|
|
32306
33343
|
C += colpeat - 1;
|
|
32307
33344
|
} else if (Rn[1] !== "/") {
|
|
32308
33345
|
++C;
|
|
33346
|
+
textp = "";
|
|
33347
|
+
textpidx = 0;
|
|
33348
|
+
textR = [];
|
|
32309
33349
|
colpeat = 1;
|
|
32310
33350
|
var rptR = rowpeat ? R + rowpeat - 1 : R;
|
|
32311
33351
|
if (C > range.e.c)
|
|
@@ -32376,6 +33416,11 @@
|
|
|
32376
33416
|
case "time":
|
|
32377
33417
|
q.t = "n";
|
|
32378
33418
|
q.v = parse_isodur(ctag["time-value"]) / 86400;
|
|
33419
|
+
if (opts.cellDates) {
|
|
33420
|
+
q.t = "d";
|
|
33421
|
+
q.v = numdate(q.v);
|
|
33422
|
+
}
|
|
33423
|
+
q.z = "HH:MM:SS";
|
|
32379
33424
|
break;
|
|
32380
33425
|
case "number":
|
|
32381
33426
|
q.t = "n";
|
|
@@ -32803,12 +33848,13 @@
|
|
|
32803
33848
|
atag = parsexmltag(Rn[0], false);
|
|
32804
33849
|
if (!atag.href)
|
|
32805
33850
|
break;
|
|
32806
|
-
atag.Target = atag.href;
|
|
33851
|
+
atag.Target = unescapexml(atag.href);
|
|
32807
33852
|
delete atag.href;
|
|
32808
33853
|
if (atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) {
|
|
32809
33854
|
_Ref = ods_to_csf_3D(atag.Target.slice(1));
|
|
32810
33855
|
atag.Target = "#" + _Ref[0] + "!" + _Ref[1];
|
|
32811
|
-
}
|
|
33856
|
+
} else if (atag.Target.match(/^\.\.[\\\/]/))
|
|
33857
|
+
atag.Target = atag.Target.slice(3);
|
|
32812
33858
|
}
|
|
32813
33859
|
break;
|
|
32814
33860
|
case "table-protection":
|
|
@@ -32849,13 +33895,12 @@
|
|
|
32849
33895
|
}();
|
|
32850
33896
|
function parse_ods(zip, opts) {
|
|
32851
33897
|
opts = opts || {};
|
|
32852
|
-
|
|
32853
|
-
if (ods)
|
|
33898
|
+
if (safegetzipfile(zip, "META-INF/manifest.xml"))
|
|
32854
33899
|
parse_manifest(getzipdata(zip, "META-INF/manifest.xml"), opts);
|
|
32855
33900
|
var content = getzipstr(zip, "content.xml");
|
|
32856
33901
|
if (!content)
|
|
32857
|
-
throw new Error("Missing content.xml in
|
|
32858
|
-
var wb = parse_content_xml(
|
|
33902
|
+
throw new Error("Missing content.xml in ODS / UOF file");
|
|
33903
|
+
var wb = parse_content_xml(utf8read(content), opts);
|
|
32859
33904
|
if (safegetzipfile(zip, "meta.xml"))
|
|
32860
33905
|
wb.Props = parse_core_props(getzipdata(zip, "meta.xml"));
|
|
32861
33906
|
return wb;
|
|
@@ -32864,6 +33909,16 @@
|
|
|
32864
33909
|
return parse_content_xml(data, opts);
|
|
32865
33910
|
}
|
|
32866
33911
|
var write_styles_ods = function() {
|
|
33912
|
+
var master_styles = [
|
|
33913
|
+
"<office:master-styles>",
|
|
33914
|
+
'<style:master-page style:name="mp1" style:page-layout-name="mp1">',
|
|
33915
|
+
"<style:header/>",
|
|
33916
|
+
'<style:header-left style:display="false"/>',
|
|
33917
|
+
"<style:footer/>",
|
|
33918
|
+
'<style:footer-left style:display="false"/>',
|
|
33919
|
+
"</style:master-page>",
|
|
33920
|
+
"</office:master-styles>"
|
|
33921
|
+
].join("");
|
|
32867
33922
|
var payload = "<office:document-styles " + wxt_helper({
|
|
32868
33923
|
"xmlns:office": "urn:oasis:names:tc:opendocument:xmlns:office:1.0",
|
|
32869
33924
|
"xmlns:table": "urn:oasis:names:tc:opendocument:xmlns:table:1.0",
|
|
@@ -32877,7 +33932,7 @@
|
|
|
32877
33932
|
"xmlns:svg": "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",
|
|
32878
33933
|
"xmlns:of": "urn:oasis:names:tc:opendocument:xmlns:of:1.2",
|
|
32879
33934
|
"office:version": "1.2"
|
|
32880
|
-
}) + "
|
|
33935
|
+
}) + ">" + master_styles + "</office:document-styles>";
|
|
32881
33936
|
return function wso() {
|
|
32882
33937
|
return XML_HEADER + payload;
|
|
32883
33938
|
};
|
|
@@ -32886,20 +33941,28 @@
|
|
|
32886
33941
|
var write_text_p = function(text) {
|
|
32887
33942
|
return escapexml(text).replace(/ +/g, function($$) {
|
|
32888
33943
|
return '<text:s text:c="' + $$.length + '"/>';
|
|
32889
|
-
}).replace(/\t/g, "<text:tab/>").replace(/\n/g, "
|
|
33944
|
+
}).replace(/\t/g, "<text:tab/>").replace(/\n/g, "</text:p><text:p>").replace(/^ /, "<text:s/>").replace(/ $/, "<text:s/>");
|
|
32890
33945
|
};
|
|
32891
33946
|
var null_cell_xml = " <table:table-cell />\n";
|
|
32892
33947
|
var covered_cell_xml = " <table:covered-table-cell/>\n";
|
|
32893
33948
|
var write_ws2 = function(ws, wb, i2) {
|
|
32894
33949
|
var o = [];
|
|
32895
33950
|
o.push(' <table:table table:name="' + escapexml(wb.SheetNames[i2]) + '" table:style-name="ta1">\n');
|
|
32896
|
-
var R = 0, C = 0, range = decode_range(ws["!ref"]);
|
|
33951
|
+
var R = 0, C = 0, range = decode_range(ws["!ref"] || "A1");
|
|
32897
33952
|
var marr = ws["!merges"] || [], mi = 0;
|
|
32898
33953
|
var dense = Array.isArray(ws);
|
|
32899
|
-
|
|
32900
|
-
|
|
33954
|
+
if (ws["!cols"]) {
|
|
33955
|
+
for (C = 0; C <= range.e.c; ++C)
|
|
33956
|
+
o.push(" <table:table-column" + (ws["!cols"][C] ? ' table:style-name="co' + ws["!cols"][C].ods + '"' : "") + "></table:table-column>\n");
|
|
33957
|
+
}
|
|
33958
|
+
var H = "", ROWS = ws["!rows"] || [];
|
|
33959
|
+
for (R = 0; R < range.s.r; ++R) {
|
|
33960
|
+
H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : "";
|
|
33961
|
+
o.push(" <table:table-row" + H + "></table:table-row>\n");
|
|
33962
|
+
}
|
|
32901
33963
|
for (; R <= range.e.r; ++R) {
|
|
32902
|
-
|
|
33964
|
+
H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : "";
|
|
33965
|
+
o.push(" <table:table-row" + H + ">\n");
|
|
32903
33966
|
for (C = 0; C < range.s.c; ++C)
|
|
32904
33967
|
o.push(null_cell_xml);
|
|
32905
33968
|
for (; C <= range.e.c; ++C) {
|
|
@@ -32968,7 +34031,9 @@
|
|
|
32968
34031
|
if (cell.l && cell.l.Target) {
|
|
32969
34032
|
var _tgt = cell.l.Target;
|
|
32970
34033
|
_tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;
|
|
32971
|
-
|
|
34034
|
+
if (_tgt.charAt(0) != "#" && !_tgt.match(/^\w+:/))
|
|
34035
|
+
_tgt = "../" + _tgt;
|
|
34036
|
+
text_p = writextag("text:a", text_p, { "xlink:href": _tgt.replace(/&/g, "&") });
|
|
32972
34037
|
}
|
|
32973
34038
|
o.push(" " + writextag("table:table-cell", writextag("text:p", text_p, {}), ct) + "\n");
|
|
32974
34039
|
}
|
|
@@ -32977,7 +34042,7 @@
|
|
|
32977
34042
|
o.push(" </table:table>\n");
|
|
32978
34043
|
return o.join("");
|
|
32979
34044
|
};
|
|
32980
|
-
var write_automatic_styles_ods = function(o) {
|
|
34045
|
+
var write_automatic_styles_ods = function(o, wb) {
|
|
32981
34046
|
o.push(" <office:automatic-styles>\n");
|
|
32982
34047
|
o.push(' <number:date-style style:name="N37" number:automatic-order="true">\n');
|
|
32983
34048
|
o.push(' <number:month number:style="long"/>\n');
|
|
@@ -32986,7 +34051,47 @@
|
|
|
32986
34051
|
o.push(" <number:text>/</number:text>\n");
|
|
32987
34052
|
o.push(" <number:year/>\n");
|
|
32988
34053
|
o.push(" </number:date-style>\n");
|
|
32989
|
-
|
|
34054
|
+
var cidx = 0;
|
|
34055
|
+
wb.SheetNames.map(function(n) {
|
|
34056
|
+
return wb.Sheets[n];
|
|
34057
|
+
}).forEach(function(ws) {
|
|
34058
|
+
if (!ws)
|
|
34059
|
+
return;
|
|
34060
|
+
if (ws["!cols"]) {
|
|
34061
|
+
for (var C = 0; C < ws["!cols"].length; ++C)
|
|
34062
|
+
if (ws["!cols"][C]) {
|
|
34063
|
+
var colobj = ws["!cols"][C];
|
|
34064
|
+
if (colobj.width == null && colobj.wpx == null && colobj.wch == null)
|
|
34065
|
+
continue;
|
|
34066
|
+
process_col(colobj);
|
|
34067
|
+
colobj.ods = cidx;
|
|
34068
|
+
var w = ws["!cols"][C].wpx + "px";
|
|
34069
|
+
o.push(' <style:style style:name="co' + cidx + '" style:family="table-column">\n');
|
|
34070
|
+
o.push(' <style:table-column-properties fo:break-before="auto" style:column-width="' + w + '"/>\n');
|
|
34071
|
+
o.push(" </style:style>\n");
|
|
34072
|
+
++cidx;
|
|
34073
|
+
}
|
|
34074
|
+
}
|
|
34075
|
+
});
|
|
34076
|
+
var ridx = 0;
|
|
34077
|
+
wb.SheetNames.map(function(n) {
|
|
34078
|
+
return wb.Sheets[n];
|
|
34079
|
+
}).forEach(function(ws) {
|
|
34080
|
+
if (!ws)
|
|
34081
|
+
return;
|
|
34082
|
+
if (ws["!rows"]) {
|
|
34083
|
+
for (var R = 0; R < ws["!rows"].length; ++R)
|
|
34084
|
+
if (ws["!rows"][R]) {
|
|
34085
|
+
ws["!rows"][R].ods = ridx;
|
|
34086
|
+
var h = ws["!rows"][R].hpx + "px";
|
|
34087
|
+
o.push(' <style:style style:name="ro' + ridx + '" style:family="table-row">\n');
|
|
34088
|
+
o.push(' <style:table-row-properties fo:break-before="auto" style:row-height="' + h + '"/>\n');
|
|
34089
|
+
o.push(" </style:style>\n");
|
|
34090
|
+
++ridx;
|
|
34091
|
+
}
|
|
34092
|
+
}
|
|
34093
|
+
});
|
|
34094
|
+
o.push(' <style:style style:name="ta1" style:family="table" style:master-page-name="mp1">\n');
|
|
32990
34095
|
o.push(' <style:table-properties table:display="true" style:writing-mode="lr-tb"/>\n');
|
|
32991
34096
|
o.push(" </style:style>\n");
|
|
32992
34097
|
o.push(' <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>\n');
|
|
@@ -33037,11 +34142,12 @@
|
|
|
33037
34142
|
"xmlns:config": "urn:oasis:names:tc:opendocument:xmlns:config:1.0",
|
|
33038
34143
|
"office:mimetype": "application/vnd.oasis.opendocument.spreadsheet"
|
|
33039
34144
|
});
|
|
33040
|
-
if (opts.bookType == "fods")
|
|
34145
|
+
if (opts.bookType == "fods") {
|
|
33041
34146
|
o.push("<office:document" + attr + fods + ">\n");
|
|
33042
|
-
|
|
34147
|
+
o.push(write_meta_ods().replace(/office:document-meta/g, "office:meta"));
|
|
34148
|
+
} else
|
|
33043
34149
|
o.push("<office:document-content" + attr + ">\n");
|
|
33044
|
-
write_automatic_styles_ods(o);
|
|
34150
|
+
write_automatic_styles_ods(o, wb);
|
|
33045
34151
|
o.push(" <office:body>\n");
|
|
33046
34152
|
o.push(" <office:spreadsheet>\n");
|
|
33047
34153
|
for (var i2 = 0; i2 != wb.SheetNames.length; ++i2)
|
|
@@ -33073,7 +34179,7 @@
|
|
|
33073
34179
|
manifest.push([f, "text/xml"]);
|
|
33074
34180
|
rdf.push([f, "StylesFile"]);
|
|
33075
34181
|
f = "meta.xml";
|
|
33076
|
-
zip_add_file(zip, f, write_meta_ods());
|
|
34182
|
+
zip_add_file(zip, f, XML_HEADER + write_meta_ods());
|
|
33077
34183
|
manifest.push([f, "text/xml"]);
|
|
33078
34184
|
rdf.push([f, "MetadataFile"]);
|
|
33079
34185
|
f = "manifest.rdf";
|
|
@@ -33106,6 +34212,7 @@
|
|
|
33106
34212
|
var write_txt_str = write_obj_str({ from_sheet: sheet_to_txt });
|
|
33107
34213
|
var write_dbf_buf = write_obj_str(typeof DBF !== "undefined" ? DBF : {});
|
|
33108
34214
|
var write_eth_str = write_obj_str(typeof ETH !== "undefined" ? ETH : {});
|
|
34215
|
+
var write_wk1_buf = write_obj_str(typeof WK_ !== "undefined" ? { from_sheet: WK_.sheet_to_wk1 } : {});
|
|
33109
34216
|
function fix_opts_func(defaults) {
|
|
33110
34217
|
return function fix_opts(opts) {
|
|
33111
34218
|
for (var i2 = 0; i2 != defaults.length; ++i2) {
|
|
@@ -33227,6 +34334,13 @@
|
|
|
33227
34334
|
return parse_ods(zip, opts);
|
|
33228
34335
|
if (safegetzipfile(zip, "Index/Document.iwa"))
|
|
33229
34336
|
throw new Error("Unsupported NUMBERS file");
|
|
34337
|
+
if (!safegetzipfile(zip, "[Content_Types].xml")) {
|
|
34338
|
+
if (safegetzipfile(zip, "index.xml.gz"))
|
|
34339
|
+
throw new Error("Unsupported NUMBERS 08 file");
|
|
34340
|
+
if (safegetzipfile(zip, "index.xml"))
|
|
34341
|
+
throw new Error("Unsupported NUMBERS 09 file");
|
|
34342
|
+
throw new Error("Unsupported ZIP file");
|
|
34343
|
+
}
|
|
33230
34344
|
var entries = zipentries(zip);
|
|
33231
34345
|
var dir = parse_ct(getzipstr(zip, "[Content_Types].xml"));
|
|
33232
34346
|
var xlsb = false;
|
|
@@ -33383,8 +34497,18 @@
|
|
|
33383
34497
|
SSF: SSF.get_table()
|
|
33384
34498
|
};
|
|
33385
34499
|
if (opts && opts.bookFiles) {
|
|
33386
|
-
|
|
33387
|
-
|
|
34500
|
+
if (zip.files) {
|
|
34501
|
+
out.keys = entries;
|
|
34502
|
+
out.files = zip.files;
|
|
34503
|
+
} else {
|
|
34504
|
+
out.keys = [];
|
|
34505
|
+
out.files = {};
|
|
34506
|
+
zip.FullPaths.forEach(function(p, idx) {
|
|
34507
|
+
p = p.replace(/^Root Entry[\/]/, "");
|
|
34508
|
+
out.keys.push(p);
|
|
34509
|
+
out.files[p] = zip.FileIndex[idx];
|
|
34510
|
+
});
|
|
34511
|
+
}
|
|
33388
34512
|
}
|
|
33389
34513
|
if (opts && opts.bookVBA) {
|
|
33390
34514
|
if (dir.vba.length > 0)
|
|
@@ -33653,10 +34777,10 @@
|
|
|
33653
34777
|
}
|
|
33654
34778
|
function readSync(data, opts) {
|
|
33655
34779
|
reset_cp();
|
|
34780
|
+
var o = opts || {};
|
|
33656
34781
|
if (typeof ArrayBuffer !== "undefined" && data instanceof ArrayBuffer)
|
|
33657
|
-
return readSync(new Uint8Array(data),
|
|
34782
|
+
return readSync(new Uint8Array(data), (o = dup(o), o.type = "array", o));
|
|
33658
34783
|
var d = data, n = [0, 0, 0, 0], str = false;
|
|
33659
|
-
var o = opts || {};
|
|
33660
34784
|
if (o.cellStyles) {
|
|
33661
34785
|
o.cellNF = true;
|
|
33662
34786
|
o.sheetStubs = true;
|
|
@@ -33691,12 +34815,14 @@
|
|
|
33691
34815
|
return read_cfb(CFB.read(d, o), o);
|
|
33692
34816
|
break;
|
|
33693
34817
|
case 9:
|
|
33694
|
-
if (n[1] <=
|
|
34818
|
+
if (n[1] <= 8)
|
|
33695
34819
|
return parse_xlscfb(d, o);
|
|
33696
34820
|
break;
|
|
33697
34821
|
case 60:
|
|
33698
34822
|
return parse_xlml(d, o);
|
|
33699
34823
|
case 73:
|
|
34824
|
+
if (n[1] === 73 && n[2] === 42 && n[3] === 0)
|
|
34825
|
+
throw new Error("TIFF Image File is not a spreadsheet");
|
|
33700
34826
|
if (n[1] === 68)
|
|
33701
34827
|
return read_wb_ID(d, o);
|
|
33702
34828
|
break;
|
|
@@ -33711,11 +34837,16 @@
|
|
|
33711
34837
|
case 255:
|
|
33712
34838
|
if (n[1] === 254) {
|
|
33713
34839
|
return read_utf16(d, o);
|
|
33714
|
-
}
|
|
34840
|
+
} else if (n[1] === 0 && n[2] === 2 && n[3] === 0)
|
|
34841
|
+
return WK_.to_workbook(d, o);
|
|
33715
34842
|
break;
|
|
33716
34843
|
case 0:
|
|
33717
|
-
if (n[1] === 0
|
|
33718
|
-
|
|
34844
|
+
if (n[1] === 0) {
|
|
34845
|
+
if (n[2] >= 2 && n[3] === 0)
|
|
34846
|
+
return WK_.to_workbook(d, o);
|
|
34847
|
+
if (n[2] === 0 && (n[3] === 8 || n[3] === 9))
|
|
34848
|
+
return WK_.to_workbook(d, o);
|
|
34849
|
+
}
|
|
33719
34850
|
break;
|
|
33720
34851
|
case 3:
|
|
33721
34852
|
case 131:
|
|
@@ -33730,6 +34861,10 @@
|
|
|
33730
34861
|
case 13:
|
|
33731
34862
|
case 32:
|
|
33732
34863
|
return read_plaintext_raw(d, o);
|
|
34864
|
+
case 137:
|
|
34865
|
+
if (n[1] === 80 && n[2] === 78 && n[3] === 71)
|
|
34866
|
+
throw new Error("PNG Image File is not a spreadsheet");
|
|
34867
|
+
break;
|
|
33733
34868
|
}
|
|
33734
34869
|
if (DBF.versions.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31)
|
|
33735
34870
|
return DBF.to_workbook(d, o);
|
|
@@ -33759,7 +34894,7 @@
|
|
|
33759
34894
|
return CFB.write(cfb, o);
|
|
33760
34895
|
}
|
|
33761
34896
|
function write_zip_type(wb, opts) {
|
|
33762
|
-
var o = opts || {};
|
|
34897
|
+
var o = dup(opts || {});
|
|
33763
34898
|
var z = write_zip(wb, o);
|
|
33764
34899
|
var oopts = {};
|
|
33765
34900
|
if (o.compression)
|
|
@@ -33860,7 +34995,7 @@
|
|
|
33860
34995
|
function writeSync(wb, opts) {
|
|
33861
34996
|
reset_cp();
|
|
33862
34997
|
check_wb(wb);
|
|
33863
|
-
var o = opts || {};
|
|
34998
|
+
var o = dup(opts || {});
|
|
33864
34999
|
if (o.cellStyles) {
|
|
33865
35000
|
o.cellNF = true;
|
|
33866
35001
|
o.sheetStubs = true;
|
|
@@ -33897,6 +35032,10 @@
|
|
|
33897
35032
|
return write_string_type(write_eth_str(wb, o), o);
|
|
33898
35033
|
case "fods":
|
|
33899
35034
|
return write_string_type(write_ods(wb, o), o);
|
|
35035
|
+
case "wk1":
|
|
35036
|
+
return write_binary_type(write_wk1_buf(wb, o), o);
|
|
35037
|
+
case "wk3":
|
|
35038
|
+
return write_binary_type(WK_.book_to_wk3(wb, o), o);
|
|
33900
35039
|
case "biff2":
|
|
33901
35040
|
if (!o.biff)
|
|
33902
35041
|
o.biff = 2;
|
|
@@ -33992,7 +35131,7 @@
|
|
|
33992
35131
|
break;
|
|
33993
35132
|
continue;
|
|
33994
35133
|
case "e":
|
|
33995
|
-
v = void 0;
|
|
35134
|
+
v = v == 0 ? null : void 0;
|
|
33996
35135
|
break;
|
|
33997
35136
|
case "s":
|
|
33998
35137
|
case "d":
|
|
@@ -34004,7 +35143,9 @@
|
|
|
34004
35143
|
}
|
|
34005
35144
|
if (hdr[C] != null) {
|
|
34006
35145
|
if (v == null) {
|
|
34007
|
-
if (
|
|
35146
|
+
if (val.t == "e" && v === null)
|
|
35147
|
+
row[hdr[C]] = null;
|
|
35148
|
+
else if (defval !== void 0)
|
|
34008
35149
|
row[hdr[C]] = defval;
|
|
34009
35150
|
else if (raw && v === null)
|
|
34010
35151
|
row[hdr[C]] = null;
|
|
@@ -34263,6 +35404,9 @@
|
|
|
34263
35404
|
v = datenum(v);
|
|
34264
35405
|
}
|
|
34265
35406
|
z = o.dateNF || SSF._table[14];
|
|
35407
|
+
} else if (v === null && o.nullError) {
|
|
35408
|
+
t = "e";
|
|
35409
|
+
v = 0;
|
|
34266
35410
|
}
|
|
34267
35411
|
if (!cell)
|
|
34268
35412
|
ws[ref] = cell = { t, v };
|
|
@@ -34434,7 +35578,12 @@
|
|
|
34434
35578
|
})(utils2);
|
|
34435
35579
|
if (has_buf && typeof __require != "undefined")
|
|
34436
35580
|
(function() {
|
|
34437
|
-
var
|
|
35581
|
+
var strmod = require_stream();
|
|
35582
|
+
if (!strmod)
|
|
35583
|
+
return;
|
|
35584
|
+
var Readable = strmod.Readable;
|
|
35585
|
+
if (!Readable)
|
|
35586
|
+
return;
|
|
34438
35587
|
var write_csv_stream = function(sheet, opts) {
|
|
34439
35588
|
var stream = Readable();
|
|
34440
35589
|
var o = opts == null ? {} : opts;
|
|
@@ -34605,13 +35754,18 @@
|
|
|
34605
35754
|
else if (typeof module !== "undefined" && module.exports)
|
|
34606
35755
|
make_xlsx_lib(module.exports);
|
|
34607
35756
|
else if (typeof define === "function" && define.amd)
|
|
34608
|
-
define(function() {
|
|
35757
|
+
define("xlsx", function() {
|
|
34609
35758
|
if (!XLSX.version)
|
|
34610
35759
|
make_xlsx_lib(XLSX);
|
|
34611
35760
|
return XLSX;
|
|
34612
35761
|
});
|
|
34613
35762
|
else
|
|
34614
35763
|
make_xlsx_lib(XLSX);
|
|
35764
|
+
if (typeof window !== "undefined" && !window.XLSX)
|
|
35765
|
+
try {
|
|
35766
|
+
window.XLSX = XLSX;
|
|
35767
|
+
} catch (e) {
|
|
35768
|
+
}
|
|
34615
35769
|
}
|
|
34616
35770
|
});
|
|
34617
35771
|
|
|
@@ -34651,16 +35805,33 @@
|
|
|
34651
35805
|
}
|
|
34652
35806
|
|
|
34653
35807
|
// ../worker-utils/src/lib/worker-farm/worker-body.ts
|
|
35808
|
+
function getParentPort() {
|
|
35809
|
+
let parentPort;
|
|
35810
|
+
try {
|
|
35811
|
+
eval("globalThis.parentPort = require('worker_threads').parentPort");
|
|
35812
|
+
parentPort = globalThis.parentPort;
|
|
35813
|
+
} catch {
|
|
35814
|
+
}
|
|
35815
|
+
return parentPort;
|
|
35816
|
+
}
|
|
34654
35817
|
var onMessageWrapperMap = new Map();
|
|
34655
35818
|
var WorkerBody = class {
|
|
35819
|
+
static inWorkerThread() {
|
|
35820
|
+
return typeof self !== "undefined" || Boolean(getParentPort());
|
|
35821
|
+
}
|
|
34656
35822
|
static set onmessage(onMessage) {
|
|
34657
|
-
|
|
34658
|
-
|
|
34659
|
-
|
|
34660
|
-
}
|
|
34661
|
-
const { type, payload } = message.data;
|
|
35823
|
+
function handleMessage(message) {
|
|
35824
|
+
const parentPort3 = getParentPort();
|
|
35825
|
+
const { type, payload } = parentPort3 ? message : message.data;
|
|
34662
35826
|
onMessage(type, payload);
|
|
34663
|
-
}
|
|
35827
|
+
}
|
|
35828
|
+
const parentPort2 = getParentPort();
|
|
35829
|
+
if (parentPort2) {
|
|
35830
|
+
parentPort2.on("message", handleMessage);
|
|
35831
|
+
parentPort2.on("exit", () => console.debug("Node worker closing"));
|
|
35832
|
+
} else {
|
|
35833
|
+
globalThis.onmessage = handleMessage;
|
|
35834
|
+
}
|
|
34664
35835
|
}
|
|
34665
35836
|
static addEventListener(onMessage) {
|
|
34666
35837
|
let onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
@@ -34669,22 +35840,36 @@
|
|
|
34669
35840
|
if (!isKnownMessage(message)) {
|
|
34670
35841
|
return;
|
|
34671
35842
|
}
|
|
34672
|
-
const
|
|
35843
|
+
const parentPort3 = getParentPort();
|
|
35844
|
+
const { type, payload } = parentPort3 ? message : message.data;
|
|
34673
35845
|
onMessage(type, payload);
|
|
34674
35846
|
};
|
|
34675
35847
|
}
|
|
34676
|
-
|
|
35848
|
+
const parentPort2 = getParentPort();
|
|
35849
|
+
if (parentPort2) {
|
|
35850
|
+
console.error("not implemented");
|
|
35851
|
+
} else {
|
|
35852
|
+
globalThis.addEventListener("message", onMessageWrapper);
|
|
35853
|
+
}
|
|
34677
35854
|
}
|
|
34678
35855
|
static removeEventListener(onMessage) {
|
|
34679
35856
|
const onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
34680
35857
|
onMessageWrapperMap.delete(onMessage);
|
|
34681
|
-
|
|
35858
|
+
const parentPort2 = getParentPort();
|
|
35859
|
+
if (parentPort2) {
|
|
35860
|
+
console.error("not implemented");
|
|
35861
|
+
} else {
|
|
35862
|
+
globalThis.removeEventListener("message", onMessageWrapper);
|
|
35863
|
+
}
|
|
34682
35864
|
}
|
|
34683
35865
|
static postMessage(type, payload) {
|
|
34684
|
-
|
|
34685
|
-
|
|
34686
|
-
|
|
34687
|
-
|
|
35866
|
+
const data = { source: "loaders.gl", type, payload };
|
|
35867
|
+
const transferList = getTransferList(payload);
|
|
35868
|
+
const parentPort2 = getParentPort();
|
|
35869
|
+
if (parentPort2) {
|
|
35870
|
+
parentPort2.postMessage(data, transferList);
|
|
35871
|
+
} else {
|
|
35872
|
+
globalThis.postMessage(data, transferList);
|
|
34688
35873
|
}
|
|
34689
35874
|
}
|
|
34690
35875
|
};
|
|
@@ -34696,19 +35881,20 @@
|
|
|
34696
35881
|
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
34697
35882
|
var requestId = 0;
|
|
34698
35883
|
function createLoaderWorker(loader) {
|
|
34699
|
-
if (
|
|
35884
|
+
if (!WorkerBody.inWorkerThread()) {
|
|
34700
35885
|
return;
|
|
34701
35886
|
}
|
|
34702
35887
|
WorkerBody.onmessage = async (type, payload) => {
|
|
34703
35888
|
switch (type) {
|
|
34704
35889
|
case "process":
|
|
34705
35890
|
try {
|
|
34706
|
-
const { input, options = {} } = payload;
|
|
35891
|
+
const { input, options = {}, context = {} } = payload;
|
|
34707
35892
|
const result = await parseData({
|
|
34708
35893
|
loader,
|
|
34709
35894
|
arrayBuffer: input,
|
|
34710
35895
|
options,
|
|
34711
35896
|
context: {
|
|
35897
|
+
...context,
|
|
34712
35898
|
parse: parseOnMainThread
|
|
34713
35899
|
}
|
|
34714
35900
|
});
|
|
@@ -34768,7 +35954,7 @@
|
|
|
34768
35954
|
}
|
|
34769
35955
|
|
|
34770
35956
|
// src/excel-loader.ts
|
|
34771
|
-
var VERSION =
|
|
35957
|
+
var VERSION = true ? "4.0.0-alpha.6" : "latest";
|
|
34772
35958
|
var DEFAULT_EXCEL_LOADER_OPTIONS = {
|
|
34773
35959
|
excel: {
|
|
34774
35960
|
shape: "object-row-table",
|
|
@@ -34794,7 +35980,7 @@
|
|
|
34794
35980
|
// src/lib/parse-excel.ts
|
|
34795
35981
|
var import_xlsx = __toModule(require_xlsx());
|
|
34796
35982
|
var dataTableNamesMap = {};
|
|
34797
|
-
|
|
35983
|
+
function parseExcel(arrayBuffer, options) {
|
|
34798
35984
|
const dataUrl = "dummy";
|
|
34799
35985
|
const workbook = (0, import_xlsx.read)(arrayBuffer, {
|
|
34800
35986
|
type: "array"
|
|
@@ -34818,10 +36004,15 @@
|
|
|
34818
36004
|
// src/index.ts
|
|
34819
36005
|
var ExcelLoader2 = {
|
|
34820
36006
|
...ExcelLoader,
|
|
34821
|
-
parse
|
|
36007
|
+
async parse(arrayBuffer, options) {
|
|
36008
|
+
const data = parseExcel(arrayBuffer, options);
|
|
36009
|
+
return { shape: "object-row-table", data };
|
|
36010
|
+
}
|
|
34822
36011
|
};
|
|
34823
36012
|
|
|
34824
36013
|
// src/workers/excel-worker.ts
|
|
34825
36014
|
createLoaderWorker(ExcelLoader2);
|
|
34826
36015
|
})();
|
|
36016
|
+
/*! cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
|
36017
|
+
/*! cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
|
34827
36018
|
/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
|