Lines Matching refs:o

43 …Array<number>*/ { var o/*:Array<number>*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[…
46 var o/*:Array<string>*/ = [];
47 …for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.…
48 return o.join("");
51 var o/*:Array<string>*/ = [];
52 …for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (dat…
53 return o.join("");
87 var o = "";
102o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);
104 return o;
107 var o = "";
128o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);
130 return o;
133 var o = "";
140 o += String.fromCharCode(c1);
144 o += String.fromCharCode(c2);
149 o += String.fromCharCode(c3);
152 return o;
168 var o = x.toString("utf16le");
169 return o.length == 1;
201 …var o/*:Array<string>*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data…
213 var o = new Array(data.length);
214 for(var i = 0; i < data.length; ++i) o[i] = data[i];
215 return o;
222 var o = new Uint8Array(maxlen); variable
226 if(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);
227 else if(typeof bufs[i] == "string") o.set(new Uint8Array(s2a(bufs[i])), maxlen);
228 else o.set(new Uint8Array(bufs[i]), maxlen);
230 return o;
237 var o = new_raw_buf(content.length + 255);
240 if(c < 0x80) o[widx++] = c;
242 o[widx++] = (192|((c>>6)&31));
243 o[widx++] = (128|(c&63));
247 o[widx++] = (240|((c>>8)&7));
248 o[widx++] = (128|((c>>2)&63));
249 o[widx++] = (128|((d>>6)&15)|((c&3)<<4));
250 o[widx++] = (128|(d&63));
252 o[widx++] = (224|((c>>12)&15));
253 o[widx++] = (128|((c>>6)&63));
254 o[widx++] = (128|(c&63));
257 out.push(o.slice(0, widx));
259 o = new_raw_buf(65535);
263 out.push(o.slice(0, widx));
288 …tion _strrev(x/*:string*/)/*:string*/ { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--)…
503 function SSF_strip_decimal(o/*:string*/)/*:string*/ { argument
504 return (o.indexOf(".") == -1) ? o : o.replace(/(?:\.0*|(\.\d*[1-9])0+)$/, "$1");
508 function SSF_normalize_exp(o/*:string*/)/*:string*/ { argument
509 if(o.indexOf("E") == -1) return o;
510 return o.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2");
516 var o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;
517 o = v.toPrecision(10); if(o.length <= w) return o;
523 var o = SSF_strip_decimal(v.toFixed(11));
524 return (o.length > (v<0?12:11) || o === "0" || o === "-0") ? v.toPrecision(6) : o;
528 var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;
530 if(V >= -4 && V <= -1) o = v.toPrecision(10+V);
531 else if(Math.abs(V) <= 9) o = SSF_small_exp(v);
532 else if(V === 10) o = v.toFixed(10).substr(0,12);
533 else o = SSF_large_exp(v);
535 return SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));
562 function SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) { argument
564 o[0] -= 581;
571 var o="", ss=0, tt=0, y = val.y, out, outl = 0;
618 o = pad0(ss,2 + ss0);
619 if(fmt === 'ss') return o.substr(0,2);
620 return "." + o.substr(2,fmt.length-1);
641 var j = (s.length % w), o = s.substr(0,j);
642 for(; j!=s.length; j+=w) o+=(o.length > 0 ? "," : "") + s.substr(j,w);
643 return o;
658 var o/*:string*/;
666 o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);
667 if(o.indexOf("e") === -1) {
669 if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee);
670 else o += "E+" + (fakee - ee);
671 while(o.substr(0,2) === "0.") {
672 o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period);
673 o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");
675 o = o.replace(/\+-/,"-");
677o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(per…
678 } else o = val.toExponential(idx);
679 …if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.lengt…
680 if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e");
681 return o.replace("e","E");
696 var o = "", cc;
699 case 63: o+= " "; break;
700 case 48: o+= "0"; break;
701 default: o+= String.fromCharCode(cc);
703 return o;
731 var o;
735 o = pad0r(val,0); if(o === "0") o = "";
736 return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;
741o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])).r…
742 return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,".");
754 o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val));
756 …return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri<o.length?o.cha…
759 o = write_num_flt(type, "##########", val);
760 return "(" + o.substr(0,3) + ") " + o.substr(3, 3) + "-" + o.substr(6);
766 o = "" + sign;
769 o += oa + /*::String(*/r[2]/*::)*/ + "/" + /*::String(*/r[3]/*::)*/;
772 o += oa;
773 return o;
781 o = pad0r(val, 0);
782 if(fmt.length <= o.length) return o;
783 return hashq(fmt.substr(0,fmt.length-o.length)) + o;
786 o = "" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,"$1");
787 ri = o.indexOf(".");
788 var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres;
789 return hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));
816 var o/*:string*/;
824 o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);
825 if(!o.match(/[Ee]/)) {
827 if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee);
828 else o += "E+" + (fakee - ee);
829 o = o.replace(/\+-/,"-");
831o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(per…
832 } else o = val.toExponential(idx);
833 …if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.lengt…
834 if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e");
835 return o.replace("e","E");
847 var o;
851 o = (""+val); if(val === 0) o = "";
852 return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;
858 o = (""+val).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1]));
859 o = o.replace(/\.(\d*)$/,function($$, $1) {
862 return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,".");
874 o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g,""), val));
876 …return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri<o.length?o.cha…
879 o = write_num_int(type, "##########", val);
880 return "(" + o.substr(0,3) + ") " + o.substr(3, 3) + "-" + o.substr(6);
886 o = "" + sign;
889 o += oa + /*::String(*/r[2]/*::)*/ + "/" + /*::String(*/r[3]/*::)*/;
892 o += oa;
893 return o;
901 o = "" + val;
902 if(fmt.length <= o.length) return o;
903 return hashq(fmt.substr(0,fmt.length-o.length)) + o;
906 o = "" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,"$1");
907 ri = o.indexOf(".");
908 var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres;
909 return hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));
945 var i = 0, /*cc = 0,*/ c = "", o = "";
965 o = c;
966 while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);
967 if(o.match(SSF_abstime)) return true;
987 var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc;
996 for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);
997 out[out.length] = {t:'t', v:o}; ++i; break;
1015 o = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;
1018 out[out.length] = {t:c, v:o}; lst = c; break;
1029 o = c;
1030 while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);
1031 if(o.slice(-1) !== ']') throw 'unterminated "[" block: |' + o + '|';
1032 if(o.match(SSF_abstime)) {
1034 out[out.length] = {t:'Z', v:o.toLowerCase()};
1035 lst = o.charAt(1);
1036 } else if(o.indexOf("$") > -1) {
1037 o = (o.match(/\$([^-\[\]]*)/)||[])[1]||"$";
1038 if(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};
1044 o = c; while(++i < fmt.length && (c=fmt.charAt(i)) === "0") o += c;
1045 out[out.length] = {t:'s', v:o}; break;
1049 o = c; while(++i < fmt.length && "0#?.,E+-%".indexOf(c=fmt.charAt(i)) > -1) o += c;
1050 out[out.length] = {t:'n', v:o}; break;
1052 o = c; while(fmt.charAt(++i) === c) o+=c;
1053 out[out.length] = {t:c, v:o}; lst = c; break;
1057 o = c; while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);
1058 out[out.length] = {t:'D', v:o}; break;
1229 function SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) { argument
1230 if(o == null) o = {};
1234 if(fmt == "m/d/yy" && o.dateNF) sfmt = o.dateNF;
1238 if(fmt == 14 && o.dateNF) sfmt = o.dateNF;
1239 else sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];
1240 …if(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fm…
1244 if(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);
1245 if(v instanceof Date) v = datenum_local(v, o.date1904);
1247 if(SSF_isgeneral(f[1])) return SSF_general(v, o);
1250 return eval_fmt(f[1], v, o, f[0]);
1559 var o = /*::(*/{}/*:: :any)*/;
1587 o[type] = p;
1589 return o;
1684 var o = { class in CFB.parse
1690 if(options && options.raw) o.raw = {header: header, sectors: sectors};
1691 return o;
1781 var o = [];
1784 o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));
1788 if(o.length === 0) return (new_buf(0)/*:any*/);
1789 return (bconcat(o).slice(0, entry.size)/*:any*/);
1866 var o/*:CFBEntry*/ = ({
1879 if(ctime !== 0) o.ct = read_date(blob, blob.l-8);
1881 if(mtime !== 0) o.mt = read_date(blob, blob.l-8);
1882 o.start = blob.read_shift(4, 'i');
1883 o.size = blob.read_shift(4, 'i');
1884 if(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = ""; }
1885 if(o.type === 5) { /* root */
1886 minifat_store = o.start;
1888 /*minifat_size = o.size;*/
1889 } else if(o.size >= 4096 /* MSCSZ */) {
1890 o.storage = 'fat';
1891 …if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, se…
1892 sector_list[o.start].name = o.name;
1893 o.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);
1895 o.storage = 'minifat';
1896 if(o.size < 0) o.size = 0;
1897 else if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {
1898 o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);
1901 if(o.content) prep_blob(o.content, 0);
1902 files[name] = o;
1903 FileIndex.push(o);
1930 var o = opts || {}, root = o.root || "Root Entry";
1938 if(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;
2062 var o = new_buf(L[7] << 9);
2065 for(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);
2066 for(i = 0; i < 8; ++i) o.write_shift(2, 0);
2067 o.write_shift(2, 0x003E);
2068 o.write_shift(2, 0x0003);
2069 o.write_shift(2, 0xFFFE);
2070 o.write_shift(2, 0x0009);
2071 o.write_shift(2, 0x0006);
2072 for(i = 0; i < 3; ++i) o.write_shift(2, 0);
2073 o.write_shift(4, 0);
2074 o.write_shift(4, L[2]);
2075 o.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);
2076 o.write_shift(4, 0);
2077 o.write_shift(4, 1<<12);
2078 o.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);
2079 o.write_shift(4, L[3]);
2080 o.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);
2081 o.write_shift(4, L[1]);
2082 for(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);
2086 for(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);
2087 o.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);
2091 for(T += w; i<T-1; ++i) o.write_shift(-4, i+1);
2092 if(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }
2095 for(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);
2096 for(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);
2111 while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);
2122 while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);
2126 for(j = 0; j < 17; ++j) o.write_shift(4, 0);
2127 for(j = 0; j < 3; ++j) o.write_shift(4, -1);
2128 for(j = 0; j < 12; ++j) o.write_shift(4, 0);
2139 o.write_shift(64, _nm, "utf16le");
2140 o.write_shift(2, flen);
2141 o.write_shift(1, file.type);
2142 o.write_shift(1, file.color);
2143 o.write_shift(-4, file.L);
2144 o.write_shift(-4, file.R);
2145 o.write_shift(-4, file.C);
2146 if(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);
2147 else o.write_shift(16, file.clsid, "hex");
2148 o.write_shift(4, file.state || 0);
2149 o.write_shift(4, 0); o.write_shift(4, 0);
2150 o.write_shift(4, 0); o.write_shift(4, 0);
2151 o.write_shift(4, file.start);
2152 o.write_shift(4, file.size); o.write_shift(4, 0);
2158 o.l = (file.start+1) << 9;
2160 file.content.copy(o, o.l, 0, file.size);
2161 // o is a 0-filled Buffer so just set next offset
2162 o.l += (file.size + 511) & -512;
2164 for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);
2165 for(; j & 0x1FF; ++j) o.write_shift(1, 0);
2174 file.content.copy(o, o.l, 0, file.size);
2175 // o is a 0-filled Buffer so just set next offset
2176 o.l += (file.size + 63) & -64;
2178 for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);
2179 for(; j & 0x3F; ++j) o.write_shift(1, 0);
2184 o.l = o.length;
2187 while(o.l < o.length) o.write_shift(1, 0);
2189 return o;
2239 var o = _write(cfb, options);
2240 …/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new E…
2241 fs.writeFileSync(filename, o);
2244 function a2s(o/*:RawBytes*/)/*:string*/ {
2245 var out = new Array(o.length);
2246 for(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);
2251 var o = _write(cfb, options);
2253 case "file": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;
2254 case "binary": return typeof o == "string" ? o : a2s(o);
2255 case "base64": return Base64_encode(typeof o == "string" ? o : a2s(o));
2256 case "buffer": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);
2258 case "array": return typeof o == "string" ? s2a(o) : o;
2260 return o;
2365 var o = new_unsafe_buf(M);
2367 if(b.copy) b.copy(o);
2368 else for(; i < b.length; ++i) o[i] = b[i];
2369 return o;
2382 var o = new Array(n);
2383 for(var i = 0; i < n; ++i) o[i] = 0;
2384 return o;
2738 var o = {
2742 init_cfb(o, { root: options.root });
2778 parse_local_file(blob, csz, usz, o, EF);
2782 return o;
2787 function parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {
2840 cfb_add(o, name, data, {unsafe: true, mt: date});
2845 var o/*:CFBlob*/ = new_buf(1);
2871 o = new_buf(30);
2872 o.write_shift(4, 0x04034b50);
2873 o.write_shift(2, 20);
2874 o.write_shift(2, flags);
2875 o.write_shift(2, method);
2877 if(fi.mt) write_dos_date(o, fi.mt);
2878 else o.write_shift(4, 0);
2879 o.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);
2880 o.write_shift(4, (flags & 8) ? 0 : outbuf.length);
2881 o.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);
2882 o.write_shift(2, namebuf.length);
2883 o.write_shift(2, 0);
2885 start_cd += o.length;
2886 out.push(o);
2899 o = new_buf(12);
2900 o.write_shift(-4, crcs[fcnt]);
2901 o.write_shift(4, outbuf.length);
2902 o.write_shift(4, /*::(*/fi.content/*::||[])*/.length);
2903 start_cd += o.l;
2904 out.push(o);
2908 o = new_buf(46);
2909 o.write_shift(4, 0x02014b50);
2910 o.write_shift(2, 0);
2911 o.write_shift(2, 20);
2912 o.write_shift(2, flags);
2913 o.write_shift(2, method);
2914 o.write_shift(4, 0); /* TODO: last mod file time/date */
2915 o.write_shift(-4, crcs[fcnt]);
2917 o.write_shift(4, outbuf.length);
2918 o.write_shift(4, /*::(*/fi.content/*::||[])*/.length);
2919 o.write_shift(2, namebuf.length);
2920 o.write_shift(2, 0);
2921 o.write_shift(2, 0);
2922 o.write_shift(2, 0);
2923 o.write_shift(2, 0);
2924 o.write_shift(4, 0);
2925 o.write_shift(4, start);
2927 sz_cd += o.l;
2928 cdirs.push(o);
2935 o = new_buf(22);
2936 o.write_shift(4, 0x06054b50);
2937 o.write_shift(2, 0);
2938 o.write_shift(2, 0);
2939 o.write_shift(2, fcnt);
2940 o.write_shift(2, fcnt);
2941 o.write_shift(4, sz_cd);
2942 o.write_shift(4, start_cd);
2943 o.write_shift(2, 0);
2945 return bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));
2977 var o = [];
2978 for(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));
2979 return o.join("\r\n") + "\r\n";
3007 var o/*:Array<string>*/ = [], split = encoded.split("\r\n");
3010 if(str.length == 0) { o.push(""); continue; }
3020 o.push(tmp);
3024 return o.join("\r\n");
3027 var o = [];
3033 o.push(line);
3037 …for(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { re…
3038 return s2a(o.join("\r\n"));
3091 var o = {
3095 init_cfb(o);
3100 if(fcnt++) parse_mime(o, data.slice(start_di, di), root);
3103 return o;
3154 var o/*:CFBContainer*/ = ({}/*:any*/);
3155 init_cfb(o, opts);
3156 return o;
3306 function keys(o/*:any*/)/*:Array<any>*/ { argument
3307 var ks = Object.keys(o), o2 = [];
3308 …for(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i…
3313 var o = ([]/*:any*/), K = keys(obj);
3314 for(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];
3315 return o;
3319 var o = ([]/*:any*/), K = keys(obj);
3320 for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];
3321 return o;
3325 var o = ([]/*:any*/), K = keys(obj);
3326 for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);
3327 return o;
3331 var o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);
3333 if(o[obj[K[i]]] == null) o[obj[K[i]]] = [];
3334 o[obj[K[i]]].push(K[i]);
3336 return o;
3437 var o = [];
3438 for(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));
3439 return o.join("");
3442 function dup(o/*:any*/)/*:any*/ { argument
3443 if(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));
3444 if(typeof o != 'object' || o == null) return o;
3445 if(o instanceof Date) return new Date(o.getTime());
3447 for(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);
3451 …ction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = ""; while(o.length < l) o+=c; return o;…
3486 var o = new Date(s), n = new Date(NaN);
3487 var y = o.getYear(), m = o.getMonth(), d = o.getDate();
3494 return o;
3501 var p = str.split(re), o = [p[0]];
3502 for(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }
3503 return o;
3521 var o = data._data.getContent();
3522 if(typeof o == "string") return char_codes(o);
3523 return Array.prototype.slice.call(o); argument
3544 var o = safegetzipfile(zip, file);
3545 if(o == null) throw new Error("Cannot find file " + file + " in zip");
3546 return o;
3568 var k = zip.FullPaths || keys(zip.files), o = [];
3569 …for(var i = 0; i < k.length; ++i) if(k[i].slice(-1) != '/') o.push(k[i].replace(/^Root Entry[\/]/,…
3570 return o.sort();
3590 function zip_read(d, o) { argument
3591 switch(o.type) {
3596 throw new Error("Unrecognized type " + o.type);
3790 var o = str
3803 for(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);
3804 return o;
3841 var o = writextag('vt:lpwstr', escapexml(s));
3842 if(xlsx) o = o.replace(/&quot;/g, "_x0022_");
3843 return o;
3888 'o': 'urn:schemas-microsoft-com:office:office', property in XLMLNS
3985 var o="", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;
3989 …if(has_buf && Buffer.isBuffer(this) && buf_utf16le) o = this.slice(this.l, this.l+2*size).toStrin…
3990 else for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }
3994 case 'utf8': o = __utf8(this, this.l, this.l + size); break;
3995 case 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;
3998 …if(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l,…
4003 case 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;
4004 case 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;
4006 case 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;
4008 …case 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) s…
4010 …case '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03)…
4012 case 'cstr': size = 0; o = "";
4014 o = oo.join(""); break;
4015 case '_wstr': size = 0; o = "";
4017 size+=2; o = oo.join(""); break;
4020 case 'dbcs-cont': o = ""; loc = this.l;
4030 } o = oo.join(""); size *= 2; break;
4034 o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));
4038 case 'sbcs-cont': o = ""; loc = this.l;
4048 } o = oo.join(""); break;
4064 case 16: o = __hexlify(this, this.l, size); break;
4066 this.l+=size; return o;
4146 var o = new_raw_buf(sz);
4147 prep_blob(o, 0);
4148 return o;
4175 var o/*:Block*/ = (new_buf(sz)/*:any*/);
4176 prep_blob(o, 0);
4177 return o;
4214 var o = ba.next(l); variable
4215 if(t <= 0x7F) o.write_shift(1, t);
4217 o.write_shift(1, (t & 0x7F) + 0x80);
4218 o.write_shift(1, (t >> 7));
4221 if(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }
4222 else { o.write_shift(1, length); break; }
4331 var o = {s:{c:0,r:0},e:{c:0,r:0}}; class in safe_decode_range
4338 o.s.c = --idx;
4344 o.s.r = --idx;
4346 if(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }
4353 o.e.c = --idx;
4359 o.e.r = --idx;
4360 return o;
4369 function format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) { argument
4372 if(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;
4385 var o = opts || {};
4386 var dense = _ws ? Array.isArray(_ws) : o.dense;
4390 if(ws && o.origin != null) {
4391 if(typeof o.origin == 'number') _R = o.origin;
4393 var _origin/*:CellAddress*/ = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin;
4423 else if(o.nullError) { cell.t = 'e'; cell.v = 0; }
4424 else if(!o.sheetStubs) continue;
4430 cell.z = o.dateNF || table_fmt[14];
4431 if(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v, o.date1904)); }
4432 … else { cell.t = 'n'; cell.v = datenum(cell.v, o.date1904); cell.w = SSF_format(cell.z, cell.v); }
4455 function write_UInt32LE(x/*:number*/, o) { argument
4456 if (!o) o = new_buf(4);
4457 o.write_shift(4, x);
4458 return o;
4466 function write_XLWideString(data/*:string*/, o) { argument
4467 var _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }
4468 o.write_shift(4, data.length);
4469 if (data.length > 0) o.write_shift(0, data, 'dbcs');
4470 return _null ? o.slice(0, o.l) : o;
4483 function write_StrRun(run, o) { argument
4484 if (!o) o = new_buf(4);
4485 o.write_shift(2, run.ich || 0);
4486 o.write_shift(2, run.ifnt || 0);
4487 return o;
4510 function write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ { argument
4512 var _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }
4513 o.write_shift(1, 0);
4514 write_XLWideString(str.t, o);
4515 return _null ? o.slice(0, o.l) : o;
4519 function write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ { argument
4521 var _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }
4522 o.write_shift(1, 1);
4523 write_XLWideString(str.t, o);
4524 o.write_shift(4, 1);
4525 write_StrRun({ ich: 0, ifnt: 0 }, o);
4526 return _null ? o.slice(0, o.l) : o;
4537 function write_XLSBCell(cell/*:any*/, o/*:?Block*/) { argument
4538 if (o == null) o = new_buf(8);
4539 o.write_shift(-4, cell.c);
4540 o.write_shift(3, cell.iStyleRef || cell.s);
4541 o.write_shift(1, 0); /* fPhShow */
4542 return o;
4552 function write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) { argument
4553 if(o == null) o = new_buf(4);
4554 o.write_shift(3, cell.iStyleRef || cell.s);
4555 o.write_shift(1, 0); /* fPhShow */
4556 return o;
4568 function write_XLNullableWideString(data/*:string*/, o) { argument
4569 var _null = false; if (o == null) { _null = true; o = new_buf(127); }
4570 o.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);
4571 if (data.length > 0) o.write_shift(0, data, 'dbcs');
4572 return _null ? o.slice(0, o.l) : o;
4592 function write_RkNumber(data/*:number*/, o) { argument
4593 if (o == null) o = new_buf(4);
4597 if (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));
4611 function write_RfX(r/*:Range*/, o) { argument
4612 if (!o) o = new_buf(16);
4613 o.write_shift(4, r.s.r);
4614 o.write_shift(4, r.e.r);
4615 o.write_shift(4, r.s.c);
4616 o.write_shift(4, r.e.c);
4617 return o;
4636 // var o = new_buf(4); o.write_shift(4, parts.length);
4637 // var out = [o];
4650 function write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); } argument
4685 function write_BrtColor(color, o) { argument
4686 if (!o) o = new_buf(8);
4687 if (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }
4689 o.write_shift(1, 0x02);
4690 o.write_shift(1, color.index);
4692 o.write_shift(1, 0x06);
4693 o.write_shift(1, color.theme);
4695 o.write_shift(1, 0x05);
4696 o.write_shift(1, 0);
4701 o.write_shift(2, nTS);
4703 o.write_shift(2, 0);
4704 o.write_shift(1, 0);
4705 o.write_shift(1, 0);
4709 o.write_shift(1, parseInt(rgb.slice(0, 2), 16));
4710 o.write_shift(1, parseInt(rgb.slice(2, 4), 16));
4711 o.write_shift(1, parseInt(rgb.slice(4, 6), 16));
4712 o.write_shift(1, 0xFF);
4714 return o;
4733 function write_FontFlags(font, o) { argument
4734 if (!o) o = new_buf(2);
4742 o.write_shift(1, grbit);
4743 o.write_shift(1, 0);
4744 return o;
4748 function parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ { argument
4751 var m/*:number*/ = o.read_shift(4);
4754 case 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || "";
4757 o.l -= 4;
4758 return o.read_shift(0, w == 1 ? "lpstr" : "lpwstr");
4760 function parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); } argument
4761 function parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); } argument
5342 var o/*:Array<string>*/ = [], v;
5345 o[o.length] = (XML_HEADER);
5346 o[o.length] = writextag('Types', null, {
5351 o = o.concat([
5375 o[o.length] = (writextag('Override', null, {
5385 o[o.length] = (writextag('Override', null, {
5395 o[o.length] = (writextag('Override', null, {
5414 if(!raw && o.length>2){ o[o.length] = ('</Types>'); o[1]=o[1].replace("/>",">"); }
5415 return o.join("");
5484 var o = [XML_HEADER, writextag('Relationships', null, {
5489 o[o.length] = (writextag('Relationship', null, rels['!id'][rid]));
5491 if(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace("/>",">"); }
5492 return o.join("");
5534 var o = [XML_HEADER];
5535o.push('<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" man…
5536o.push(' <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="…
5537 …for(var i = 0; i < manifest.length; ++i) o.push(' <manifest:file-entry manifest:full-path="' + ma…
5538 o.push('</manifest:manifest>');
5539 return o.join("");
5558 var o = [XML_HEADER];
5559 o.push('<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\n');
5561 o.push(write_rdf_type(rdf[i][0], rdf[i][1]));
5562 o.push(write_rdf_has("",rdf[i][0]));
5564 o.push(write_rdf_type("","Document", "pkg"));
5565 o.push('</rdf:RDF>');
5566 return o.join("");
5616 function cp_doit(f, g, h, o, p) { argument
5620 o[o.length] = (h ? writextag(f,g,h) : writetag(f,g));
5625 var o = [XML_HEADER, writextag('cp:coreProperties', null, {
5633 if(!cp && !opts.Props) return o.join("");
5636 …g" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p);
5637 … ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p);
5646 if(v != null) cp_doit(f[0], v, null, o, p);
5648 if(o.length>2){ o[o.length] = ('</cp:coreProperties>'); o[1]=o[1].replace("/>",">"); }
5649 return o.join("");
5741 var o/*:Array<string>*/ = [], W = writextag;
5744 o[o.length] = (XML_HEADER);
5745 o[o.length] = (writextag('Properties', null, {
5757 if(v !== undefined) o[o.length] = (W(f[0], v));
5761o[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', '<vt:lpstr>Worksheets</vt:lpstr>')…
5762o[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return "<vt:lpstr…
5763 if(o.length>2){ o[o.length] = ('</Properties>'); o[1]=o[1].replace("/>",">"); }
5764 return o.join("");
5813 var o = [XML_HEADER, writextag('Properties', null, {
5817 if(!cp) return o.join("");
5820 o[o.length] = (writextag('property', write_vt(cp[k], true), {
5826 if(o.length>2){ o[o.length] = '</Properties>'; o[1]=o[1].replace("/>",">"); }
5827 return o.join("");
5871 var o/*:Array<string>*/ = [];
5885 o.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));
5887 return writextag('DocumentProperties', o.join(""), {xmlns:XLMLNS.o });
5892 var o/*:Array<string>*/ = [];
5905 o.push(writextag(escapexmltag(k), m, {"dt:dt":t}));
5917 o.push(writextag(escapexmltag(k), m, {"dt:dt":t}));
5919 return '<' + T + ' xmlns="' + XLMLNS.o + '">' + o.join("") + '</' + T + '>';
5935 var o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;
6028 var o = {};
6029 o.Size = blob.read_shift(4);
6030 //o.Format = blob.read_shift(4);
6031 blob.l += o.Size + 3 - (o.Size - 1) % 4;
6032 return o;
6061 var o = new_buf(4), p = new_buf(4);
6062 o.write_shift(4, type == 0x50 ? 0x1F : type);
6078 return bconcat([o, p]);
6308 function writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j<n; ++j) o.write_shift(1, 0); retur… argument
6318 function writebool(v/*:any*/, o) { if(!o) o=new_buf(2); o.write_shift(2, +!!v); return o; } argument
6321 function writeuint16(v/*:number*/, o) { if(!o) o=new_buf(2); o.write_shift(2, v); return o; } argument
6331 function write_Bes(v, t/*:string*/, o) { argument
6332 if(!o) o = new_buf(2);
6333 o.write_shift(1, ((t == 'e') ? +v : +!!v));
6334 o.write_shift(1, ((t == 'e') ? 1 : 0));
6335 return o;
6351 var o = cch ? blob.read_shift(cch, encoding) : "";
6353 return o;
6419 function write_XLUnicodeString(str, opts, o) { argument
6420 if(!o) o = new_buf(3 + 2 * str.length);
6421 o.write_shift(2, str.length);
6422 o.write_shift(1, 1);
6423 o.write_shift(31, str, 'utf16le');
6424 return o;
6479 var o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, "") : "";
6480 return o;
6482 function write_HyperlinkString(str/*:string*/, o) { argument
6483 if(!o) o = new_buf(6 + str.length * 2);
6484 o.write_shift(4, 1 + str.length);
6485 for(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));
6486 o.write_shift(2, 0);
6487 return o;
6566 function write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) { argument
6567 if(!o) o = new_buf(6);
6568 o.write_shift(2, R);
6569 o.write_shift(2, C);
6570 o.write_shift(2, ixfe||0);
6571 return o;
6620 function write_Ref8U(r/*:Range*/, o) { argument
6621 if(!o) o = new_buf(8);
6622 o.write_shift(2, r.s.r);
6623 o.write_shift(2, r.e.r);
6624 o.write_shift(2, r.s.c);
6625 o.write_shift(2, r.e.c);
6626 return o;
6710 var o = {BIFFVer:0, dt:0}; class in parse_BOF
6711 o.BIFFVer = blob.read_shift(2); length -= 2;
6712 if(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }
6713 switch(o.BIFFVer) {
6721 default: if(length > 6) throw new Error("Unexpected BIFF Ver " + o.BIFFVer);
6725 return o;
6727 function write_BOF(wb/*:Workbook*/, t/*:number*/, o) { argument
6729 switch(o.bookType) {
6772 var o = new_buf(b8 ? 112 : 54);
6773 o.write_shift(opts.biff == 8 ? 2 : 1, 7);
6774 if(b8) o.write_shift(1, 0);
6775 o.write_shift(4, 0x33336853);
6776 o.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));
6777 while(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));
6778 return o;
6804 var o = new_buf(8 + w * data.name.length);
6805 o.write_shift(4, data.pos);
6806 o.write_shift(1, data.hs || 0);
6807 o.write_shift(1, data.dt);
6808 o.write_shift(1, data.name.length);
6809 if(opts.biff >= 8) o.write_shift(1, 1);
6810 o.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');
6811 var out = o.slice(0, o.l);
6812 out.l = o.l; return out;
6833 var o = bconcat([header].concat(strs));
6834 …/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; })…
6835 return o;
6906 var o = new_buf(18);
6907 o.write_shift(2, 0);
6908 o.write_shift(2, 0);
6909 o.write_shift(2, 0x7260);
6910 o.write_shift(2, 0x44c0);
6911 o.write_shift(2, 0x38);
6912 o.write_shift(2, 0);
6913 o.write_shift(2, 0);
6914 o.write_shift(2, 1);
6915 o.write_shift(2, 0x01f4);
6916 return o;
6925 var o = new_buf(18), f = 0x6b6;
6927 o.write_shift(2, f);
6928 o.write_shift(4, 0);
6929 o.write_shift(4, 64);
6930 o.write_shift(4, 0);
6931 o.write_shift(4, 0);
6932 return o;
6941 var o/*:any*/ = { class in parse_Font
6950 o.name = parse_ShortXLUnicodeString(blob, 0, opts);
6951 return o;
6956 var o = new_buf(w);
6957 o.write_shift(2, (data.sz || 12) * 20);
6958 o.write_shift(4, 0);
6959 o.write_shift(2, 400);
6960 o.write_shift(4, 0);
6961 o.write_shift(2, 0);
6962 o.write_shift(1, name.length);
6963 if(!b5) o.write_shift(1, 1);
6964 o.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? "sbcs" : "utf16le"));
6965 return o;
6975 var o = new_buf(10);
6976 write_XLSCell(R, C, os, o);
6977 o.write_shift(4, v);
6978 return o;
6993 var o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);
6994 write_XLSCell(R, C, os, o);
6995 o.write_shift(2, v.length);
6996 if(b8) o.write_shift(1, 1);
6997 o.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');
6998 return o;
7008 function write_Format(i/*:number*/, f/*:string*/, opts, o) { argument
7010 if(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));
7011 o.write_shift(2, i);
7012 o.write_shift((b5 ? 1 : 2), f.length);
7013 if(!b5) o.write_shift(1, 1);
7014 o.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));
7015 var out = (o.length > o.l) ? o.slice(0, o.l) : o;
7032 var o = new_buf(2*w + 6);
7033 o.write_shift(w, range.s.r);
7034 o.write_shift(w, range.e.r + 1);
7035 o.write_shift(2, range.s.c);
7036 o.write_shift(2, range.e.c + 1);
7037 o.write_shift(2, 0);
7038 return o;
7073 var o = {};
7076 o.patternType = XLSFillPattern[c >> 26];
7078 if(!opts.cellStyles) return o;
7079 o.alc = a & 0x07;
7080 o.fWrap = (a >> 3) & 0x01;
7081 o.alcV = (a >> 4) & 0x07;
7082 o.fJustLast = (a >> 7) & 0x01;
7083 o.trot = (a >> 8) & 0xFF;
7084 o.cIndent = (a >> 16) & 0x0F;
7085 o.fShrinkToFit = (a >> 20) & 0x01;
7086 o.iReadOrder = (a >> 22) & 0x02;
7087 o.fAtrNum = (a >> 26) & 0x01;
7088 o.fAtrFnt = (a >> 27) & 0x01;
7089 o.fAtrAlc = (a >> 28) & 0x01;
7090 o.fAtrBdr = (a >> 29) & 0x01;
7091 o.fAtrPat = (a >> 30) & 0x01;
7092 o.fAtrProt = (a >> 31) & 0x01;
7094 o.dgLeft = b & 0x0F;
7095 o.dgRight = (b >> 4) & 0x0F;
7096 o.dgTop = (b >> 8) & 0x0F;
7097 o.dgBottom = (b >> 12) & 0x0F;
7098 o.icvLeft = (b >> 16) & 0x7F;
7099 o.icvRight = (b >> 23) & 0x7F;
7100 o.grbitDiag = (b >> 30) & 0x03;
7102 o.icvTop = c & 0x7F;
7103 o.icvBottom = (c >> 7) & 0x7F;
7104 o.icvDiag = (c >> 14) & 0x7F;
7105 o.dgDiag = (c >> 21) & 0x0F;
7107 o.icvFore = d & 0x7F;
7108 o.icvBack = (d >> 7) & 0x7F;
7109 o.fsxButton = (d >> 14) & 0x01;
7110 return o;
7117 var o = {};
7118 o.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);
7119 o.fStyle = (o.flags >> 2) & 0x01;
7121 o.data = parse_CellStyleXF(blob, length, o.fStyle, opts);
7122 return o;
7124 function write_XF(data, ixfeP, opts, o) { argument
7126 if(!o) o = new_buf(b5 ? 16 : 20);
7127 o.write_shift(2, 0);
7129 o.write_shift(2, (data.numFmtId||0));
7130 o.write_shift(2, 0xFFF4);
7132 o.write_shift(2, (data.numFmtId||0));
7133 o.write_shift(2, (ixfeP<<4));
7137 o.write_shift(4, f);
7138 o.write_shift(4, 0);
7139 if(!b5) o.write_shift(4, 0);
7140 o.write_shift(2, 0);
7141 return o;
7154 var o = new_buf(8);
7155 o.write_shift(4, 0);
7156 o.write_shift(2, guts[0] ? guts[0] + 1 : 0);
7157 o.write_shift(2, guts[1] ? guts[1] + 1 : 0);
7158 return o;
7171 var o = new_buf(8);
7172 write_XLSCell(R, C, os, o);
7173 write_Bes(v, t, o);
7174 return o;
7186 var o = new_buf(14);
7187 write_XLSCell(R, C, os, o);
7188 write_Xnum(v, o);
7189 return o;
7213 var o = ({ class in parse_ExternName
7224 o.body = body || blob.read_shift(length-2);
7225 if(typeof body === "string") o.Name = body;
7226 return o;
7260 var o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);
7261 while(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));
7264 return o;
7268 var o = parse_ShortXLUnicodeString(blob, length, opts);
7269 return o.charCodeAt(0) == 0x03 ? o.slice(1) : o;
7335 var o = new_buf(2 + merges.length * 8);
7336 o.write_shift(2, merges.length);
7337 for(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);
7338 return o;
7467 var o = [0,0], d;
7468 d = blob.read_shift(2); o[0] = CountryEnum[d] || d;
7469 d = blob.read_shift(2); o[1] = CountryEnum[d] || d;
7470 return o;
7472 function write_Country(o) { argument
7473 if(!o) o = new_buf(4);
7474 o.write_shift(2, 0x01);
7475 o.write_shift(2, 0x01);
7476 return o;
7482 var o = [];
7483 while(ccv-->0) o.push(parse_LongRGB(blob, 8));
7484 return o;
7490 var o = [];
7491 while(ccv-->0) o.push(parse_LongRGB(blob, 8));
7492 return o;
7498 var o = {cxfs:0, crc:0}; class in parse_XFCRC
7499 o.cxfs = blob.read_shift(2);
7500 o.crc = blob.read_shift(4);
7501 return o;
7515 var o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/); class in parse_ColInfo
7516 if(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;
7517 return o;
7520 var o = new_buf(12);
7521 o.write_shift(2, idx);
7522 o.write_shift(2, idx);
7523 o.write_shift(2, col.width * 256);
7524 o.write_shift(2, 0);
7527 o.write_shift(1, f);
7529 o.write_shift(1, f);
7530 o.write_shift(2, 0);
7531 return o;
7536 var o = {};
7537 if(length < 32) return o;
7539 o.header = parse_Xnum(blob, 8);
7540 o.footer = parse_Xnum(blob, 8);
7542 return o;
7570 var o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)}; class in parse_ImData
7572 return o;
7867 var o = opts || {};
7868 if(!o.dateNF) o.dateNF = "yyyymmdd";
7869 var ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);
7870 ws["!cols"] = o.DBF.map(function(field) { return {
7874 delete o.DBF;
7880 var o = sheet_to_workbook(dbf_to_sheet(buf, opts), opts);
7881 o.bookType = "dbf";
7882 return o;
7889 var o = opts || {};
7891 if(+o.codepage >= 0) set_cp(+o.codepage);
7892 if(o.type == "string") throw new Error("Cannot write DBF to JS string");
7955 if(dbf_codepage_map[cp] != +o.codepage) {
7956 if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
8046 …var sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == "number" ? _getan…
8206 var o = aoa_to_sheet(aoa, _opts);
8207 keys(ws).forEach(function(k) { o[k] = ws[k]; });
8208 var outwb = sheet_to_workbook(o, opts);
8215 var o = "C;Y" + (R+1) + ";X" + (C+1) + ";K";
8218 o += (cell.v||0);
8219 if(cell.f && !cell.F) o += ";E" + a1_to_rc(cell.f, {r:R, c:C}); break;
8220 case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
8221 case 'e': o += cell.w || cell.v; break;
8222 case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
8223 …case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") +…
8225 return o;
8253 var preamble/*:Array<string>*/ = ["ID;PSheetJS;N;E"], o/*:Array<string>*/ = [];
8274 o.push(p.join(RS));
8276 return preamble.join(RS) + RS + o.join(RS) + RS + "E" + RS;
8333 var o = sheet_to_workbook(dif_to_sheet(str, opts), opts);
8334 o.bookType = "dif";
8335 return o;
8344 var o/*:Array<string>*/ = [
8382 o.push(p);
8384 return o.join("") + "-1,0\r\nEOD";
8446 var o/*:Array<string>*/ = [], oo/*:Array<string>*/ = [], cell, coord = "";
8472 o.push(oo.join(":"));
8475 o.push("sheet:c:" + (r.e.c-r.s.c+1) + ":r:" + (r.e.r-r.s.r+1) + ":tvf:1");
8476 o.push("valueformat:1:text-wiki");
8477 //o.push("copiedfrom:" + ws['!ref']); // clipboard only
8478 return o.join("\n");
8494 function set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) { argument
8495 if(o.raw) arr[R][C] = data;
8505 var o = opts || {};
8522 set_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);
8524 set_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);
8526 if(o.sheetRows) arr = arr.slice(0, o.sheetRows);
8571 var o = opts || {};
8573 if(DENSE != null && o.dense == null) o.dense = DENSE;
8574 var ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);
8588 else if(o && o.FS) sep = o.FS;
8592 var _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;
8598 else if(o.raw) { cell.t = 's'; cell.v = s; }
8606 …else if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }
8608 cell.z = o.dateNF || table_fmt[14];
8610 …if(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; v = parseDate(s, k); }
8611 if(o.cellDates) { cell.t = 'd'; cell.v = v; }
8613 …if(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell…
8614 if(!o.cellNF) delete cell.z;
8620 else if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }
8625 if(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }
8674 var o/*:Array<string>*/ = [];
8687 o.push(oo.join(""));
8689 return o.join("\n");
8701 var o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;
8703 var out = SYLK.to_workbook(d, o);
8704 o.WTF = OLD_WTF;
8707 o.WTF = OLD_WTF;
8741 var o = opts || {};
8742 if(DENSE != null && o.dense == null) o.dense = DENSE;
8743 var s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = "Sheet1", next_n = "", sidx = 0;
8747 var sheetRows = o.sheetRows || 0;
8757 o.Enum = WK1Enum;
8760 o.vers = val;
8761 if(val >= 0x1000) o.qpro = true;
8764 o.vers = val;
8765 o.works = true;
8772 …if((!o.qpro && !o.works || RT == 0x33) && val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice…
8773 if(o.works || o.works2) val[1].v = val[1].v.replace(/\r\n/g, "\n");
8780 val[1].z = o.dateNF || table_fmt[14];
8781 if(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }
8784 if(o.qpro) {
8789 s = (o.dense ? [] : {});
8795 var tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];
8802 if(o.dense) {
8807 case 0x5405: o.works2 = true; break;
8809 }}, o);
8811 o.Enum = WK3Enum;
8812 if(d[2] == 0x0E) { o.qpro = true; d.l = 0; }
8830 s = (o.dense ? [] : {});
8835 if(o.dense) {
8848 }}, o);
8867 var o = opts || {};
8868 if(+o.codepage >= 0) set_cp(+o.codepage);
8869 if(o.type == "string") throw new Error("Cannot write WK1 to JS string");
8901 var o = opts || {};
8902 if(+o.codepage >= 0) set_cp(+o.codepage);
8903 if(o.type == "string") throw new Error("Cannot write WK3 to JS string");
8978 var o = {s:{c:0,r:0},e:{c:0,r:0}};
8980 o.s.c = blob.read_shift(1);
8982 o.s.r = blob.read_shift(2);
8983 o.e.c = blob.read_shift(1);
8985 o.e.r = blob.read_shift(2);
8986 return o;
8988 o.s.c = blob.read_shift(2);
8989 o.s.r = blob.read_shift(2);
8991 o.e.c = blob.read_shift(2);
8992 o.e.r = blob.read_shift(2);
8994 if(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;
8995 return o;
9007 var o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];
9009 o[0].c = blob.read_shift(1);
9010 o[3] = blob.read_shift(1);
9011 o[0].r = blob.read_shift(2);
9014 o[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);
9015 o[2] = blob.read_shift(2);
9017 o[2] = blob.read_shift(1);
9018 o[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);
9020 return o;
9025 var o = parse_cell(blob, length, opts);
9026 o[1].t = 's';
9030 o[1].v = blob.read_shift(len, 'utf8');
9031 return o;
9034 o[1].v = blob.read_shift(tgt - blob.l, 'cstr');
9035 return o;
9039 var o = new_buf(7 + s.length);
9040 o.write_shift(1, 0xFF);
9041 o.write_shift(2, C);
9042 o.write_shift(2, R);
9043 o.write_shift(1, 0x27); // ??
9044 for(var i = 0; i < o.length; ++i) {
9046 o.write_shift(1, cc >= 0x80 ? 0x5F : cc);
9048 o.write_shift(1, 0);
9049 return o;
9053 var o = parse_cell(blob, length, opts);
9054 o[1].t = 's';
9057 o[1].v = blob.read_shift(len, 'utf8');
9058 return o;
9060 o[1].v = blob.read_shift(tgt - blob.l, 'cstr');
9061 return o;
9065 var o = parse_cell(blob, length, opts);
9066 o[1].v = blob.read_shift(2, 'i');
9067 return o;
9070 var o = new_buf(7);
9071 o.write_shift(1, 0xFF);
9072 o.write_shift(2, C);
9073 o.write_shift(2, R);
9074 o.write_shift(2, v, 'i');
9075 return o;
9079 var o = parse_cell(blob, length, opts);
9080 o[1].v = blob.read_shift(8, 'f');
9081 return o;
9084 var o = new_buf(13);
9085 o.write_shift(1, 0xFF);
9086 o.write_shift(2, C);
9087 o.write_shift(2, R);
9088 o.write_shift(8, v, 'f');
9089 return o;
9094 var o = parse_cell(blob, length, opts);
9096 o[1].v = blob.read_shift(8, 'f');
9100 wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);
9103 return o;
9208 function wk1_fmla_to_csf(blob, o) {
9216 C = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
9217 R = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
9221 var c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
9222 var r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
9223 C = wk1_parse_rc(o[0].c, blob.read_shift(2), true);
9224 R = wk1_parse_rc(o[0].r, blob.read_shift(2), false);
9267 if(out.length == 1) o[1].f = "" + out[0];
9273 var o = [{c:0,r:0}, {t:'n',v:0}, 0];
9274 o[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];
9275 return o;
9279 var o = parse_cell_3(blob, length);
9280 o[1].t = 's';
9281 o[1].v = blob.read_shift(length - 4, 'cstr');
9282 return o;
9286 var o = new_buf(6 + s.length);
9287 o.write_shift(2, R);
9288 o.write_shift(1, wsidx);
9289 o.write_shift(1, C);
9290 o.write_shift(1, 0x27);
9293 o.write_shift(1, cc >= 0x80 ? 0x5F : cc);
9295 o.write_shift(1, 0);
9296 return o;
9300 var o = parse_cell_3(blob, length);
9301 o[1].v = blob.read_shift(2);
9302 var v = o[1].v >> 1;
9303 if(o[1].v & 0x1) {
9315 o[1].v = v;
9316 return o;
9320 var o = parse_cell_3(blob, length);
9325 if(v1 === 0 && v2 === 0xC0000000) { o[1].t = "e"; o[1].v = 0x0F; } // ERR -> #VALUE!
9326 else if(v1 === 0 && v2 === 0xD0000000) { o[1].t = "e"; o[1].v = 0x2A; } // NA -> #N/A
9327 else o[1].v = 0;
9328 return o;
9331 o[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));
9332 return o;
9335 var o = new_buf(14);
9336 o.write_shift(2, R);
9337 o.write_shift(1, wsidx);
9338 o.write_shift(1, C);
9340 o.write_shift(4, 0);
9341 o.write_shift(4, 0);
9342 o.write_shift(2, 0xFFFF);
9343 return o;
9356 o.write_shift(4, v1);
9357 o.write_shift(4, v2);
9359 o.write_shift(2, e);
9360 return o;
9364 var o = parse_NUMBER_17(blob, 14);
9366 return o;
9370 var o = parse_cell_3(blob, length);
9372 o[1].v = v1 >> 6;
9373 return o;
9377 var o = parse_cell_3(blob, length);
9379 o[1].v = v1;
9380 return o;
9384 var o = parse_NUMBER_27(blob, 12);
9386 return o;
9396 var o = ""; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);
9397 return o;
9411 var o = {}, tgt = blob.l + length;
9415 o[dt] = [0, ""];
9416 o[dt][0] = blob.read_shift(2);
9417 while(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;
9421 return o;
9632 var o = opts || {};
9633 if(DENSE != null && o.dense == null) o.dense = DENSE;
9634 var s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/);
9671 s = ((o.dense ? [] : {})/*:any*/);
9729 if(!(!o.sheetStubs && cell.t == "z")) {
9748 if(!(!o.sheetStubs && cell.t == "z")) {
9888 var o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/); class in parse_rs.parse_r
9890 if(rpr) o.s = parse_rpr(rpr[1]);
9891 return o;
9979 var o = parse_si(ss[i].trim(), opts);
9980 if(o != null) s[s.length] = o;
9990 var o = [XML_HEADER];
9991 o[o.length] = (writextag('sst', null, {
10008 o[o.length] = (sitag);
10010 if(o.length>2){ o[o.length] = ('</sst>'); o[1]=o[1].replace("/>",">"); }
10011 return o.join("");
10044 function write_BrtBeginSst(sst, o) { argument
10045 if(!o) o = new_buf(8);
10046 o.write_shift(4, sst.Count);
10047 o.write_shift(4, sst.Unique);
10048 return o;
10063 var o/*:Array<number>*/ = [], oo = str.split("");
10064 for(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);
10065 return o;
10070 var o/*:any*/ = {};
10071 o.Major = blob.read_shift(2);
10072 o.Minor = blob.read_shift(2);
10073 /*:: if(length == null) return o; */
10075 return o;
10080 var o = {};
10081 o.id = blob.read_shift(0, 'lpp4');
10082 o.R = parse_CRYPTOVersion(blob, 4);
10083 o.U = parse_CRYPTOVersion(blob, 4);
10084 o.W = parse_CRYPTOVersion(blob, 4);
10085 return o;
10092 var o = {};
10097 o.name = blob.read_shift(0, 'lpp4');
10098 o.comps = comps;
10100 return o;
10105 var o = [];
10108 while(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));
10109 return o;
10114 var o/*:Array<string>*/ = [];
10117 while(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));
10118 return o;
10123 var o = {};
10126 o.id = blob.read_shift(0, 'lpp4');
10127 o.name = blob.read_shift(0, 'lpp4');
10128 o.R = parse_CRYPTOVersion(blob, 4);
10129 o.U = parse_CRYPTOVersion(blob, 4);
10130 o.W = parse_CRYPTOVersion(blob, 4);
10131 return o;
10148 var o = {};
10149 o.Flags = (blob.read_shift(4) & 0x3F);
10151 o.AlgID = blob.read_shift(4);
10153 switch(o.AlgID) {
10154 case 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;
10155 case 0x6801: valid = (o.Flags == 0x04); break;
10156 case 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;
10157 default: throw 'Unrecognized encryption algorithm: ' + o.AlgID;
10160 o.AlgIDHash = blob.read_shift(4);
10161 o.KeySize = blob.read_shift(4);
10162 o.ProviderType = blob.read_shift(4);
10164 o.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');
10166 return o;
10171 var o = {}, tgt = blob.l + length;
10173 o.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;
10174 o.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;
10176 o.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;
10177 return o;
10208 var o = {};
10214 case '<keyData': KeyData.forEach(function(k) { o[k] = y[k]; }); break;
10215 …case '<dataIntegrity': o.encryptedHmacKey = y.encryptedHmacKey; o.encryptedHmacValue = y.encrypted…
10216 case '<keyEncryptors>': case '<keyEncryptors': o.encs = []; break;
10219 case '<keyEncryptor': o.uri = y.uri; break;
10221 case '<encryptedKey': o.encs.push(y); break;
10225 return o;
10230 var o = {};
10231 var vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); length -= 4;
10234 o.Flags = blob.read_shift(4); length -= 4;
10236 o.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;
10237 o.EncryptionVerifier = parse_EncryptionVerifier(blob, length);
10238 return o;
10242 var o = {};
10243 var vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);
10245 o.Salt = blob.read_shift(16);
10246 o.EncryptedVerifier = blob.read_shift(16);
10247 o.EncryptedVerifierHash = blob.read_shift(16);
10248 return o;
10355 var o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/); class in parse_XORObfuscation
10356 if(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);
10357 out.valid = o.verificationBytes === o.verifier;
10359 return o;
10364 var o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;
10365 if(o.Info === 1) o.Data = parse_RC4Header(blob, length);
10366 else o.Data = parse_RC4CryptoHeader(blob, length);
10367 return o;
10370 var o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */ class in parse_FilePass
10371 if(o.Type) parse_FilePassHeader(blob, length-2, o);
10372 else parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);
10373 return o;
10391 var o = opts || {};
10392 var ws = o.dense ? [] : {};
10421 if (o.cellText !== false)
10450 var o = ["{\\rtf1\\ansi"];
10452 return o[0] + "}";
10456 o.push("\\trowd\\trautofit1");
10458 o.push("\\cellx" + (C + 1));
10459 o.push("\\pard\\intbl");
10464 o.push(" \\cell");
10467 o.push(" " + (cell.w || (format_cell(cell), cell.w) || "").replace(/[\r\n]/g, "\\par "));
10468 o.push("\\cell");
10470 o.push("\\pard\\intbl\\row");
10472 return o.join("") + "}";
10475 var o = h.slice(h[0]==="#"?1:0).slice(0,6);
10476 return [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];
10479 for(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);
10480 return o.toString(16).toUpperCase().slice(1);
10882 var o = ["<numFmts>"];
10884 …for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmt…
10886 if(o.length === 1) return "";
10887 o[o.length] = ("</numFmts>");
10888 o[0] = writextag('numFmts', null, { count:o.length-2 }).replace("/>", ">");
10889 return o.join("");
10951 var o/*:Array<string>*/ = [];
10952 o[o.length] = (writextag('cellXfs',null));
10954 o[o.length] = (writextag('xf', null, c));
10956 o[o.length] = ("</cellXfs>");
10957 if(o.length === 2) return "";
10958 o[0] = writextag('cellXfs',null, {count:o.length-2}).replace("/>",">");
10959 return o.join("");
11005 var o = [XML_HEADER, writextag('styleSheet', null, {
11009 if(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;
11010o[o.length] = ('<fonts count="1"><font><sz val="12"/><color theme="1"/><name val="Calibri"/><famil…
11011o[o.length] = ('<fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill …
11012o[o.length] = ('<borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></bor…
11013o[o.length] = ('<cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cel…
11014 if((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);
11015o[o.length] = ('<cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyle…
11016 o[o.length] = ('<dxfs count="0"/>');
11017o[o.length] = ('<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="Pi…
11019 if(o.length>2){ o[o.length] = ('</styleSheet>'); o[1]=o[1].replace("/>",">"); }
11020 return o.join("");
11028 function write_BrtFmt(i/*:number*/, f/*:string*/, o) { argument
11029 if(!o) o = new_buf(6 + 4 * f.length);
11030 o.write_shift(2, i);
11031 write_XLWideString(f, o);
11032 var out = (o.length > o.l) ? o.slice(0, o.l) : o;
11033 if(o.l == null) o.l = o.length;
11082 function write_BrtFont(font/*:any*/, o) { argument
11083 if(!o) o = new_buf(25+4*32);
11084 o.write_shift(2, font.sz * 20);
11085 write_FontFlags(font, o);
11086 o.write_shift(2, font.bold ? 0x02BC : 0x0190);
11090 o.write_shift(2, sss);
11091 o.write_shift(1, font.underline || 0);
11092 o.write_shift(1, font.family || 0);
11093 o.write_shift(1, font.charset || 0);
11094 o.write_shift(1, 0);
11095 write_BrtColor(font.color, o);
11099 o.write_shift(1, scheme);
11100 write_XLWideString(font.name, o);
11101 return o.length > o.l ? o.slice(0, o.l) : o;
11129 function write_BrtFill(fill, o) { argument
11130 if(!o) o = new_buf(4*3 + 8*7 + 16*1);
11134 o.write_shift(4, fls);
11138 write_BrtColor({auto:1}, o);
11140 write_BrtColor({auto:1}, o);
11142 for(; j < 12; ++j) o.write_shift(4, 0);
11144 for(; j < 4; ++j) o.write_shift(4, 0);
11146 for(; j < 12; ++j) o.write_shift(4, 0); /* TODO */
11156 return o.length > o.l ? o.slice(0, o.l) : o;
11167 function write_BrtXF(data, ixfeP, o) { argument
11168 if(!o) o = new_buf(16);
11169 o.write_shift(2, ixfeP||0);
11170 o.write_shift(2, data.numFmtId||0);
11171 o.write_shift(2, 0); /* iFont */
11172 o.write_shift(2, 0); /* iFill */
11173 o.write_shift(2, 0); /* ixBorder */
11174 o.write_shift(1, 0); /* trot */
11175 o.write_shift(1, 0); /* indent */
11177 o.write_shift(1, flow); /* flags */
11178 o.write_shift(1, 0); /* flags */
11179 o.write_shift(1, 0); /* xfGrbitAtr */
11180 o.write_shift(1, 0);
11181 return o;
11185 function write_Blxf(data, o) { argument
11186 if(!o) o = new_buf(10);
11187 o.write_shift(1, 0); /* dg */
11188 o.write_shift(1, 0);
11189 o.write_shift(4, 0); /* color */
11190 o.write_shift(4, 0); /* color */
11191 return o;
11195 function write_BrtBorder(border, o) { argument
11196 if(!o) o = new_buf(51);
11197 o.write_shift(1, 0); /* diagonal */
11198 write_Blxf(null, o); /* top */
11199 write_Blxf(null, o); /* bottom */
11200 write_Blxf(null, o); /* left */
11201 write_Blxf(null, o); /* right */
11202 write_Blxf(null, o); /* diag */
11203 return o.length > o.l ? o.slice(0, o.l) : o;
11207 function write_BrtStyle(style, o) { argument
11208 if(!o) o = new_buf(12+4*10);
11209 o.write_shift(4, style.xfId);
11210 o.write_shift(2, 1);
11211 o.write_shift(1, +style.builtinId);
11212 o.write_shift(1, 0); /* iLevel */
11213 write_XLNullableWideString(style.name || "", o);
11214 return o.length > o.l ? o.slice(0, o.l) : o;
11219 var o = new_buf(4+256*2*4);
11220 o.write_shift(4, cnt);
11221 write_XLNullableWideString(defTableStyle, o);
11222 write_XLNullableWideString(defPivotStyle, o);
11223 return o.length > o.l ? o.slice(0, o.l) : o;
11526 var o = [XML_HEADER];
11527o[o.length] = '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Offi…
11528 o[o.length] = '<a:themeElements>';
11530 o[o.length] = '<a:clrScheme name="Office">';
11531 o[o.length] = '<a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1>';
11532 o[o.length] = '<a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1>';
11533 o[o.length] = '<a:dk2><a:srgbClr val="1F497D"/></a:dk2>';
11534 o[o.length] = '<a:lt2><a:srgbClr val="EEECE1"/></a:lt2>';
11535 o[o.length] = '<a:accent1><a:srgbClr val="4F81BD"/></a:accent1>';
11536 o[o.length] = '<a:accent2><a:srgbClr val="C0504D"/></a:accent2>';
11537 o[o.length] = '<a:accent3><a:srgbClr val="9BBB59"/></a:accent3>';
11538 o[o.length] = '<a:accent4><a:srgbClr val="8064A2"/></a:accent4>';
11539 o[o.length] = '<a:accent5><a:srgbClr val="4BACC6"/></a:accent5>';
11540 o[o.length] = '<a:accent6><a:srgbClr val="F79646"/></a:accent6>';
11541 o[o.length] = '<a:hlink><a:srgbClr val="0000FF"/></a:hlink>';
11542 o[o.length] = '<a:folHlink><a:srgbClr val="800080"/></a:folHlink>';
11543 o[o.length] = '</a:clrScheme>';
11545 o[o.length] = '<a:fontScheme name="Office">';
11546 o[o.length] = '<a:majorFont>';
11547 o[o.length] = '<a:latin typeface="Cambria"/>';
11548 o[o.length] = '<a:ea typeface=""/>';
11549 o[o.length] = '<a:cs typeface=""/>';
11550 o[o.length] = '<a:font script="Jpan" typeface="MS Pゴシック"/>';
11551 o[o.length] = '<a:font script="Hang" typeface="맑은 고딕"/>';
11552 o[o.length] = '<a:font script="Hans" typeface="宋体"/>';
11553 o[o.length] = '<a:font script="Hant" typeface="新細明體"/>';
11554 o[o.length] = '<a:font script="Arab" typeface="Times New Roman"/>';
11555 o[o.length] = '<a:font script="Hebr" typeface="Times New Roman"/>';
11556 o[o.length] = '<a:font script="Thai" typeface="Tahoma"/>';
11557 o[o.length] = '<a:font script="Ethi" typeface="Nyala"/>';
11558 o[o.length] = '<a:font script="Beng" typeface="Vrinda"/>';
11559 o[o.length] = '<a:font script="Gujr" typeface="Shruti"/>';
11560 o[o.length] = '<a:font script="Khmr" typeface="MoolBoran"/>';
11561 o[o.length] = '<a:font script="Knda" typeface="Tunga"/>';
11562 o[o.length] = '<a:font script="Guru" typeface="Raavi"/>';
11563 o[o.length] = '<a:font script="Cans" typeface="Euphemia"/>';
11564 o[o.length] = '<a:font script="Cher" typeface="Plantagenet Cherokee"/>';
11565 o[o.length] = '<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>';
11566 o[o.length] = '<a:font script="Tibt" typeface="Microsoft Himalaya"/>';
11567 o[o.length] = '<a:font script="Thaa" typeface="MV Boli"/>';
11568 o[o.length] = '<a:font script="Deva" typeface="Mangal"/>';
11569 o[o.length] = '<a:font script="Telu" typeface="Gautami"/>';
11570 o[o.length] = '<a:font script="Taml" typeface="Latha"/>';
11571 o[o.length] = '<a:font script="Syrc" typeface="Estrangelo Edessa"/>';
11572 o[o.length] = '<a:font script="Orya" typeface="Kalinga"/>';
11573 o[o.length] = '<a:font script="Mlym" typeface="Kartika"/>';
11574 o[o.length] = '<a:font script="Laoo" typeface="DokChampa"/>';
11575 o[o.length] = '<a:font script="Sinh" typeface="Iskoola Pota"/>';
11576 o[o.length] = '<a:font script="Mong" typeface="Mongolian Baiti"/>';
11577 o[o.length] = '<a:font script="Viet" typeface="Times New Roman"/>';
11578 o[o.length] = '<a:font script="Uigh" typeface="Microsoft Uighur"/>';
11579 o[o.length] = '<a:font script="Geor" typeface="Sylfaen"/>';
11580 o[o.length] = '</a:majorFont>';
11581 o[o.length] = '<a:minorFont>';
11582 o[o.length] = '<a:latin typeface="Calibri"/>';
11583 o[o.length] = '<a:ea typeface=""/>';
11584 o[o.length] = '<a:cs typeface=""/>';
11585 o[o.length] = '<a:font script="Jpan" typeface="MS Pゴシック"/>';
11586 o[o.length] = '<a:font script="Hang" typeface="맑은 고딕"/>';
11587 o[o.length] = '<a:font script="Hans" typeface="宋体"/>';
11588 o[o.length] = '<a:font script="Hant" typeface="新細明體"/>';
11589 o[o.length] = '<a:font script="Arab" typeface="Arial"/>';
11590 o[o.length] = '<a:font script="Hebr" typeface="Arial"/>';
11591 o[o.length] = '<a:font script="Thai" typeface="Tahoma"/>';
11592 o[o.length] = '<a:font script="Ethi" typeface="Nyala"/>';
11593 o[o.length] = '<a:font script="Beng" typeface="Vrinda"/>';
11594 o[o.length] = '<a:font script="Gujr" typeface="Shruti"/>';
11595 o[o.length] = '<a:font script="Khmr" typeface="DaunPenh"/>';
11596 o[o.length] = '<a:font script="Knda" typeface="Tunga"/>';
11597 o[o.length] = '<a:font script="Guru" typeface="Raavi"/>';
11598 o[o.length] = '<a:font script="Cans" typeface="Euphemia"/>';
11599 o[o.length] = '<a:font script="Cher" typeface="Plantagenet Cherokee"/>';
11600 o[o.length] = '<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>';
11601 o[o.length] = '<a:font script="Tibt" typeface="Microsoft Himalaya"/>';
11602 o[o.length] = '<a:font script="Thaa" typeface="MV Boli"/>';
11603 o[o.length] = '<a:font script="Deva" typeface="Mangal"/>';
11604 o[o.length] = '<a:font script="Telu" typeface="Gautami"/>';
11605 o[o.length] = '<a:font script="Taml" typeface="Latha"/>';
11606 o[o.length] = '<a:font script="Syrc" typeface="Estrangelo Edessa"/>';
11607 o[o.length] = '<a:font script="Orya" typeface="Kalinga"/>';
11608 o[o.length] = '<a:font script="Mlym" typeface="Kartika"/>';
11609 o[o.length] = '<a:font script="Laoo" typeface="DokChampa"/>';
11610 o[o.length] = '<a:font script="Sinh" typeface="Iskoola Pota"/>';
11611 o[o.length] = '<a:font script="Mong" typeface="Mongolian Baiti"/>';
11612 o[o.length] = '<a:font script="Viet" typeface="Arial"/>';
11613 o[o.length] = '<a:font script="Uigh" typeface="Microsoft Uighur"/>';
11614 o[o.length] = '<a:font script="Geor" typeface="Sylfaen"/>';
11615 o[o.length] = '</a:minorFont>';
11616 o[o.length] = '</a:fontScheme>';
11618 o[o.length] = '<a:fmtScheme name="Office">';
11619 o[o.length] = '<a:fillStyleLst>';
11620 o[o.length] = '<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>';
11621 o[o.length] = '<a:gradFill rotWithShape="1">';
11622 o[o.length] = '<a:gsLst>';
11623o[o.length] = '<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="30…
11624o[o.length] = '<a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val…
11625o[o.length] = '<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod va…
11626 o[o.length] = '</a:gsLst>';
11627 o[o.length] = '<a:lin ang="16200000" scaled="1"/>';
11628 o[o.length] = '</a:gradFill>';
11629 o[o.length] = '<a:gradFill rotWithShape="1">';
11630 o[o.length] = '<a:gsLst>';
11631o[o.length] = '<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="100000"/><a:shade val="10…
11632o[o.length] = '<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="50000"/><a:shade val…
11633 o[o.length] = '</a:gsLst>';
11634 o[o.length] = '<a:lin ang="16200000" scaled="0"/>';
11635 o[o.length] = '</a:gradFill>';
11636 o[o.length] = '</a:fillStyleLst>';
11637 o[o.length] = '<a:lnStyleLst>';
11638o[o.length] = '<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="…
11639o[o.length] = '<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val=…
11640o[o.length] = '<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val=…
11641 o[o.length] = '</a:lnStyleLst>';
11642 o[o.length] = '<a:effectStyleLst>';
11643 o[o.length] = '<a:effectStyle>';
11644 o[o.length] = '<a:effectLst>';
11645o[o.length] = '<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:s…
11646 o[o.length] = '</a:effectLst>';
11647 o[o.length] = '</a:effectStyle>';
11648 o[o.length] = '<a:effectStyle>';
11649 o[o.length] = '<a:effectLst>';
11650o[o.length] = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:s…
11651 o[o.length] = '</a:effectLst>';
11652 o[o.length] = '</a:effectStyle>';
11653 o[o.length] = '<a:effectStyle>';
11654 o[o.length] = '<a:effectLst>';
11655o[o.length] = '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:s…
11656 o[o.length] = '</a:effectLst>';
11657o[o.length] = '<a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/>…
11658 o[o.length] = '<a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d>';
11659 o[o.length] = '</a:effectStyle>';
11660 o[o.length] = '</a:effectStyleLst>';
11661 o[o.length] = '<a:bgFillStyleLst>';
11662 o[o.length] = '<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>';
11663 o[o.length] = '<a:gradFill rotWithShape="1">';
11664 o[o.length] = '<a:gsLst>';
11665o[o.length] = '<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="35…
11666o[o.length] = '<a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val=…
11667o[o.length] = '<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod v…
11668 o[o.length] = '</a:gsLst>';
11669o[o.length] = '<a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/…
11670 o[o.length] = '</a:gradFill>';
11671 o[o.length] = '<a:gradFill rotWithShape="1">';
11672 o[o.length] = '<a:gsLst>';
11673o[o.length] = '<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="30…
11674o[o.length] = '<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod v…
11675 o[o.length] = '</a:gsLst>';
11676o[o.length] = '<a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/><…
11677 o[o.length] = '</a:gradFill>';
11678 o[o.length] = '</a:bgFillStyleLst>';
11679 o[o.length] = '</a:fmtScheme>';
11680 o[o.length] = '</a:themeElements>';
11682 o[o.length] = '<a:objectDefaults>';
11683 o[o.length] = '<a:spDef>';
11684o[o.length] = '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="acc…
11685 o[o.length] = '</a:spDef>';
11686 o[o.length] = '<a:lnDef>';
11687o[o.length] = '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="acc…
11688 o[o.length] = '</a:lnDef>';
11689 o[o.length] = '</a:objectDefaults>';
11690 o[o.length] = '<a:extraClrSchemeLst/>';
11691 o[o.length] = '</a:theme>';
11692 return o.join("");
11713 var o = {};
11714 o.xclrType = blob.read_shift(2);
11715 o.nTintShade = blob.read_shift(2);
11716 switch(o.xclrType) {
11718 case 1: o.xclrValue = parse_IcvXF(blob, 4); break;
11719 case 2: o.xclrValue = parse_LongRGBA(blob, 4); break;
11720 case 3: o.xclrValue = parse_ColorTheme(blob, 4); break;
11724 return o;
11741 var o = [extType];
11745 o[1] = parse_FullColorExt(blob, cb); break;
11746 case 0x06: o[1] = parse_XFExtGradient(blob, cb); break;
11747 case 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;
11750 return o;
11793 var o = new_buf(12 + 2 * data.name.length);
11794 o.write_shift(4, data.flags);
11795 o.write_shift(4, data.version);
11796 write_XLWideString(data.name, o);
11797 return o.slice(0, o.l);
11807 var o = new_buf(4 + 8 * mdb.length);
11808 o.write_shift(4, mdb.length);
11810 o.write_shift(4, mdb[i][0]);
11811 o.write_shift(4, mdb[i][1]);
11813 return o;
11816 var o = new_buf(8 + 2 * name.length);
11817 o.write_shift(4, cnt);
11818 write_XLWideString(name, o);
11819 return o.slice(0, o.l);
11826 var o = new_buf(8);
11827 o.write_shift(4, cnt);
11828 o.write_shift(4, cm ? 1 : 0);
11829 return o;
11977 var o = [XML_HEADER];
11978o.push('<metadata xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:xlrd="ht…
11979 return o.join("");
12108 var o = [
12109 …writextag("xml", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv'…
12110 …writextag("o:shapelayout", writextag("o:idmap", null, {'v:ext':"edit", 'data':rId}), {'v:ext':"edi…
12116 if(_comments.length > 0) o.push(writextag("v:shapetype", [
12118 writextag("v:path", null, {gradientshapeok:"t", 'o:connecttype':"rect"})
12119 ].join(""), {id:"_x0000_t202", coordsize:csize.join(","), 'o:spt':202, path:bbox}));
12121 _comments.forEach(function(x) { ++_shapeid; o.push(write_vml_comment(x, _shapeid)); });
12122 o.push('</xml>');
12123 return o.join("");
12130 …var fillparm = fillopts.type == "gradient" ? writextag("o:fill", null, {type:"gradientUnscaled", '…
12145 writextag("v:path", null, {'o:connecttype':"none"}),
12183 var o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});
12184 if(comment.h) o.h = comment.h;
12192 if(o.a == people[i].id) { o.a = people[i].name || o.a; break; }
12194 cell.c.push(o);
12231 var o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];
12234 o.push("<authors>");
12238 o.push("<author>" + a + "</author>");
12242 o.push("<author>" + "tc=" + w.ID + "</author>");
12245 if(iauthor.length == 0) { iauthor.push("SheetJ5"); o.push("<author>SheetJ5</author>"); }
12246 o.push("</authors>");
12247 o.push("<commentList>");
12259 o.push('<comment ref="' + d[0] + '" authorId="' + iauthor.indexOf(escapexml(c.a)) + '"><text>');
12260 o.push(writetag("t", c.t == null ? "" : escapexml(c.t)));
12261 o.push('</text></comment>');
12265 o.push('<comment ref="' + d[0] + '" authorId="' + lastauthor + '"><text>');
12268 o.push(writetag("t", escapexml(t)));
12269 o.push('</text></comment>');
12272 o.push("</commentList>");
12273 if(o.length>2) { o[o.length] = ('</comments>'); o[1]=o[1].replace("/>",">"); }
12274 return o.join("");
12317 …var o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\/]>/…
12331 o.push(writextag('threadedComment', writetag('text', c.t||""), tcopts));
12334 o.push('</ThreadedComments>');
12335 return o.join("");
12368 var o = [XML_HEADER, writextag('personList', null, {
12373 o.push(writextag('person', null, {
12380 o.push("</personList>");
12381 return o.join("");
12393 function write_BrtBeginComment(data, o) { argument
12394 if(o == null) o = new_buf(36);
12395 o.write_shift(4, data[1].iauthor);
12396 write_UncheckedRfX((data[0]/*:any*/), o);
12397 o.write_shift(4, 0);
12398 o.write_shift(4, 0);
12399 o.write_shift(4, 0);
12400 o.write_shift(4, 0);
12401 return o;
12709 var o/*:Array<number>*/ = [];
12711 for(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));
12712 return o;
12886 for(var i = 0, o/*:Array<Array<any>>*/ = []; i != rows && (o[i] = []); ++i)
12887 for(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);
12888 return o;
13174 var o = [];
13179 o.push(rgce[i][1]);
13183 o.push(rgce[i][2]);
13188 o.push(rgce[i][1]);
13201 if(length !== 0) o.push(parsenoop(blob, length));
13202 return o;
13221 var o/*:Array<string>*/ = [];
13234 o.push(r.join(","));
13236 return o.join(";");
13275 var o = "";
13278 o = XTI[1] == -1 ? "#REF" : supbooks.SheetNames[XTI[1]];
13279 return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]];
13289 o = XTI[1] == -1 ? "#REF" : (supbooks.SheetNames[XTI[1]] || "SH33TJSERR3");
13290 return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]];
13294 o = XTI[1] == -1 ? "#REF" : (supbooks[XTI[0]][0][3][XTI[1]] || "SH33TJSERR4");
13295 return XTI[1] == XTI[2] ? o : o + ":" + supbooks[XTI[0]][0][3][XTI[2]];
13450 var o = "";
13454 o = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + "!";
13457 else o = supbooks.SheetNames[nameidx-1]+ "!";
13458 if(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;
13459 else if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;
13462 if(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct
13463 else o += "SH33TJSERRX";
13465 stack.push(o);
13668 var o = new_buf(8);
13669 o.write_shift(1, 0x03);
13670 o.write_shift(1, 0);
13671 o.write_shift(2, 0);
13672 o.write_shift(2, 0);
13673 o.write_shift(2, 0xFFFF);
13674 return o;
15096 var o = "of:=" + f.replace(crefregex, "$1[.$2$3$4$5]").replace(/\]:\[/g,":");
15098 return o.replace(/;/g, "|").replace(/,/g,";");
15338 var o = '<mergeCells count="' + merges.length + '">';
15339 for(var i = 0; i != merges.length; ++i) o += '<mergeCell ref="' + encode_range(merges[i]) + '"/>';
15340 return o + '</mergeCells>';
15352 function write_ws_xml_sheetpr(ws, wb, idx, opts, o) { argument
15370 o[o.length] = (writextag('sheetPr', payload, props));
15383 var o = ({sheet:1}/*:any*/); class in write_ws_xml_protection
15384 sheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = "1"; });
15385 sheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = "0"; });
15387 …if(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpp…
15388 return writextag('sheetProtection', null, o);
15422 var o = {};
15424 if(margin[k]) o[k] = parseFloat(margin[k]);
15426 return o;
15447 var o = ["<cols>"], col;
15450 o[o.length] = (writextag('col', null, col_obj_w(i, col)));
15452 o[o.length] = "</cols>";
15453 return o.join("");
15457 var o = { ref: (data.match(/ref="([^"]*)"/)||[])[1]}; class in parse_ws_xml_autofilter
15458 return o;
15519 …var v = (cell.t == "z" || cell.v == null)? "" : writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/… class in write_ws_xml_cell
15522 if(os !== 0) o.s = os;
15525 case 'd': o.t = "d"; break;
15526 case 'b': o.t = "b"; break;
15527 case 'e': o.t = "e"; break;
15533 o.t = "s"; break;
15535 else o.t = "str"; break;
15546 if(cell.D) o.cm = 1;
15547 return writextag('c', v, o);
15738 …var o/*:Array<string>*/ = [], r/*:Array<string>*/ = [], range = safe_decode_range(ws['!ref']), cel…
15762 o[o.length] = (writextag('row', r.join(""), params));
15775 o[o.length] = (writextag('row', "", params));
15778 return o.join("");
15782 var o = [XML_HEADER, writextag('worksheet', null, {
15801 write_ws_xml_sheetpr(ws, wb, idx, opts, o);
15803 o[o.length] = (writextag('dimension', null, {'ref': ref}));
15805 o[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);
15808 if(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {
15814 …if(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']…
15816 o[sidx = o.length] = '<sheetData/>';
15820 if(rdata.length > 0) o[o.length] = (rdata);
15822 if(o.length>sidx+1) { o[o.length] = ('</sheetData>'); o[sidx]=o[sidx].replace("/>",">"); }
15826 if(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);
15831 …if(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx…
15837 …if(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merg…
15845 o[o.length] = "<hyperlinks>";
15856 o[o.length] = writextag("hyperlink",null,rel);
15858 o[o.length] = "</hyperlinks>";
15864 if(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);
15873 …if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag("ignoredErrors", …
15879 o[o.length] = writextag("drawing", null, {"r:id":"rId" + rId});
15885 o[o.length] = writextag("legacyDrawing", null, {"r:id":"rId" + rId});
15897 if(o.length>1) { o[o.length] = ('</worksheet>'); o[1]=o[1].replace("/>",">"); }
15898 return o.join("");
15917 var o = new_buf(17+8*16);
15919 o.write_shift(4, R);
15921 o.write_shift(4, 0); /* TODO: ixfe */
15926 o.write_shift(2, miyRw);
15928 o.write_shift(1, 0); /* top/bot padding */
15934 o.write_shift(1, flags);
15936 o.write_shift(1, 0); /* phonetic guide */
15939 var ncolspan = 0, lcs = o.l;
15940 o.l += 4;
15953 o.write_shift(4, first);
15954 o.write_shift(4, last);
15957 var l = o.l;
15958 o.l = lcs;
15959 o.write_shift(4, ncolspan);
15960 o.l = l;
15962 return o.length > o.l ? o.slice(0, o.l) : o;
15965 var o = write_BrtRowHdr(R, range, ws);
15966 if((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);
15976 //function write_BrtWsFmtInfo(ws, o) { }
15989 function write_BrtWsProp(str, outl, o) { argument
15990 if(o == null) o = new_buf(84+4*str.length);
15996 o.write_shift(1, f);
15997 for(var i = 1; i < 3; ++i) o.write_shift(1,0);
15998 write_BrtColor({auto:1}, o);
15999 o.write_shift(-4,-1);
16000 o.write_shift(-4,-1);
16001 write_XLSBCodeName(str, o);
16002 return o.slice(0, o.l);
16010 function write_BrtCellBlank(cell, ncell, o) { argument
16011 if(o == null) o = new_buf(8);
16012 return write_XLSBCell(ncell, o);
16018 function write_BrtShortBlank(cell, ncell, o) { argument
16019 if(o == null) o = new_buf(4);
16020 return write_XLSBShortCell(ncell, o);
16029 function write_BrtCellBool(cell, ncell, o) { argument
16030 if(o == null) o = new_buf(9);
16031 write_XLSBCell(ncell, o);
16032 o.write_shift(1, cell.v ? 1 : 0);
16033 return o;
16040 function write_BrtShortBool(cell, ncell, o) { argument
16041 if(o == null) o = new_buf(5);
16042 write_XLSBShortCell(ncell, o);
16043 o.write_shift(1, cell.v ? 1 : 0);
16044 return o;
16053 function write_BrtCellError(cell, ncell, o) { argument
16054 if(o == null) o = new_buf(9);
16055 write_XLSBCell(ncell, o);
16056 o.write_shift(1, cell.v);
16057 return o;
16064 function write_BrtShortError(cell, ncell, o) { argument
16065 if(o == null) o = new_buf(8);
16066 write_XLSBShortCell(ncell, o);
16067 o.write_shift(1, cell.v);
16068 o.write_shift(2, 0);
16069 o.write_shift(1, 0);
16070 return o;
16080 function write_BrtCellIsst(cell, ncell, o) { argument
16081 if(o == null) o = new_buf(12);
16082 write_XLSBCell(ncell, o);
16083 o.write_shift(4, ncell.v);
16084 return o;
16091 function write_BrtShortIsst(cell, ncell, o) { argument
16092 if(o == null) o = new_buf(8);
16093 write_XLSBShortCell(ncell, o);
16094 o.write_shift(4, ncell.v);
16095 return o;
16104 function write_BrtCellReal(cell, ncell, o) { argument
16105 if(o == null) o = new_buf(16);
16106 write_XLSBCell(ncell, o);
16107 write_Xnum(cell.v, o);
16108 return o;
16115 function write_BrtShortReal(cell, ncell, o) { argument
16116 if(o == null) o = new_buf(12);
16117 write_XLSBShortCell(ncell, o);
16118 write_Xnum(cell.v, o);
16119 return o;
16128 function write_BrtCellRk(cell, ncell, o) { argument
16129 if(o == null) o = new_buf(12);
16130 write_XLSBCell(ncell, o);
16131 write_RkNumber(cell.v, o);
16132 return o;
16139 function write_BrtShortRk(cell, ncell, o) { argument
16140 if(o == null) o = new_buf(8);
16141 write_XLSBShortCell(ncell, o);
16142 write_RkNumber(cell.v, o);
16143 return o;
16159 function write_BrtCellSt(cell, ncell, o) { argument
16161 if(o == null) o = new_buf(12 + 4 * cell.v.length);
16162 write_XLSBCell(ncell, o);
16163 write_XLWideString(data, o);
16164 return o.length > o.l ? o.slice(0, o.l) : o;
16171 function write_BrtShortSt(cell, ncell, o) { argument
16173 if(o == null) o = new_buf(8 + 4 * data.length);
16174 write_XLSBShortCell(ncell, o);
16175 write_XLWideString(data, o);
16176 return o.length > o.l ? o.slice(0, o.l) : o;
16185 var o = [cell, value, 'b'];
16189 o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */
16192 return o;
16201 var o = [cell, value, 'e'];
16205 o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */
16208 return o;
16217 var o = [cell, value, 'n'];
16221 o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */
16224 return o;
16233 var o = [cell, value, 'str'];
16237 o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */
16240 return o;
16247 function write_BrtBeginMergeCells(cnt, o) { argument
16248 if(o == null) o = new_buf(4);
16249 o.write_shift(4, cnt);
16250 return o;
16262 var o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/); class in parse_BrtHLink
16263 if(tooltip) o.Tooltip = tooltip;
16264 return o;
16267 var o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || "").length));
16268 write_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);
16269 write_RelID("rId" + rId, o);
16272 write_XLWideString(loc || "", o);
16273 write_XLWideString(l[1].Tooltip || "", o);
16274 write_XLWideString("", o);
16275 return o.slice(0, o.l);
16287 var o = [rfx]; o[2] = fAlwaysCalc;
16290 o[1] = formula;
16292 return o;
16299 var o = [rfx];
16302 o[1] = formula;
16305 return o;
16310 function write_BrtColInfo(C/*:number*/, col, o) { argument
16311 if(o == null) o = new_buf(18);
16313 o.write_shift(-4, C);
16314 o.write_shift(-4, C);
16315 o.write_shift(4, (p.width || 10) * 256);
16316 o.write_shift(4, 0/*ixfe*/); // style
16321 o.write_shift(2, flags); // bit flag
16322 return o;
16332 function write_BrtMargins(margins/*:Margins*/, o) { argument
16333 if(o == null) o = new_buf(6*8);
16335 BrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });
16336 return o;
16345 function write_BrtBeginWsView(ws, Workbook, o) { argument
16346 if(o == null) o = new_buf(30);
16349 o.write_shift(2, f); // bit flag
16350 o.write_shift(4, 0);
16351 o.write_shift(4, 0); // view first row
16352 o.write_shift(4, 0); // view first col
16353 o.write_shift(1, 0); // gridline color ICV
16354 o.write_shift(1, 0);
16355 o.write_shift(2, 0);
16356 o.write_shift(2, 100); // zoom scale
16357 o.write_shift(2, 0);
16358 o.write_shift(2, 0);
16359 o.write_shift(2, 0);
16360 o.write_shift(4, 0); // workbook view id
16361 return o;
16366 var o = new_buf(24);
16367 o.write_shift(4, 4);
16368 o.write_shift(4, 1);
16369 write_UncheckedRfX(ref, o);
16370 return o;
16374 function write_BrtSheetProtection(sp, o) { argument
16375 if(o == null) o = new_buf(16*4+2);
16376 o.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);
16377 o.write_shift(4, 1); // this record should not be written if no protection
16395 /*:: if(o == null) throw "unreachable"; */
16396 if(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);
16397 else o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);
16399 return o;
16707 var o/*:any*/ = ({r:R, c:C}/*:any*/); class in write_ws_bin_cell
16708 if(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);
16723 o.s = get_cell_style(opts.cellXfs, cell, opts);
16724 if(cell.l) ws['!links'].push([encode_cell(o), cell.l]);
16729 o.t = "s"; o.v = vv;
16730 if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));
16731 else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));
16733 o.t = "str";
16734 if(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));
16735 else write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));
16741 if(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));
16742 else write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));
16744 if(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));
16745 else write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));
16748 o.t = "b";
16749 if(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));
16750 else write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));
16753 o.t = "e";
16754 if(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));
16755 else write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));
16758 if(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));
16759 else write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));
16998 // var o = [XML_HEADER, writextag('chartsheet', null, {
17002 // o[o.length] = writextag("drawing", null, {"r:id": "rId1"});
17004 // if(o.length>2) { o[o.length] = ('</chartsheet>'); o[1]=o[1].replace("/>",">"); }
17005 // return o.join("");
17397 var o = [XML_HEADER];
17398 o[o.length] = writextag('workbook', null, {
17421 o[o.length] = (writextag('workbookPr', null, workbookPr));
17430 o[o.length] = "<bookViews>";
17436 o[o.length] = '<workbookView firstSheet="' + i + '" activeTab="' + i + '"/>';
17437 o[o.length] = "</bookViews>";
17440 o[o.length] = "<sheets>";
17449 o[o.length] = (writextag('sheet',null,sht));
17451 o[o.length] = "</sheets>";
17457 o[o.length] = "<definedNames>";
17464 o[o.length] = writextag('definedName', escapexml(n.Ref), d);
17466 o[o.length] = "</definedNames>";
17480 if(o.length>2){ o[o.length] = '</workbook>'; o[1]=o[1].replace("/>",">"); }
17481 return o.join("");
17492 function write_BrtBundleSh(data, o) { argument
17493 if(!o) o = new_buf(127);
17494 o.write_shift(4, data.Hidden);
17495 o.write_shift(4, data.iTabID);
17496 write_RelID(data.strRelID, o);
17497 write_XLWideString(data.name.slice(0,31), o);
17498 return o.length > o.l ? o.slice(0, o.l) : o;
17503 var o/*:WBProps*/ = ({}/*:any*/);
17505 o.defaultThemeVersion = data.read_shift(4);
17507 if(strName.length > 0) o.CodeName = strName;
17508 o.autoCompressPictures = !!(flags & 0x10000);
17509 o.backupFile = !!(flags & 0x40);
17510 o.checkCompatibility = !!(flags & 0x1000);
17511 o.date1904 = !!(flags & 0x01);
17512 o.filterPrivacy = !!(flags & 0x08);
17513 o.hidePivotFieldList = !!(flags & 0x400);
17514 o.promptedSolutions = !!(flags & 0x10);
17515 o.publishItems = !!(flags & 0x800);
17516 o.refreshAllConnections = !!(flags & 0x40000);
17517 o.saveExternalLinkValues = !!(flags & 0x80);
17518 o.showBorderUnselectedTables = !!(flags & 0x04);
17519 o.showInkAnnotation = !!(flags & 0x20);
17520 o.showObjects = ["all", "placeholders", "none"][(flags >> 13) & 0x03];
17521 o.showPivotChartFilter = !!(flags & 0x8000);
17522 o.updateLinks = ["userSet", "never", "always"][(flags >> 8) & 0x03];
17523 return o;
17525 function write_BrtWbProp(data/*:?WBProps*/, o) { argument
17526 if(!o) o = new_buf(72);
17533 o.write_shift(4, flags);
17534 o.write_shift(4, 0);
17535 write_XLSBCodeName(data && data.CodeName || "ThisWorkbook", o);
17536 return o.slice(0, o.l);
17540 var o = {};
17542 o.ArchID = data.read_shift(4);
17544 return o;
17570 var o = new_buf(9);
17574 o.write_shift(4, flags); // flags
17575 o.write_shift(1, 0); // chKey
17576 o.write_shift(4, name.Sheet == null ? 0xFFFFFFFF : name.Sheet);
17579 o,
17721 function write_BrtFileVersion(data, o) { argument
17722 if(!o) o = new_buf(127);
17723 for(var i = 0; i != 4; ++i) o.write_shift(4, 0);
17724 write_XLWideString("SheetJS", o);
17725 write_XLWideString(XLSX.version, o);
17726 write_XLWideString(XLSX.version, o);
17727 write_XLWideString("7262", o);
17728 return o.length > o.l ? o.slice(0, o.l) : o;
17732 function write_BrtBookView(idx, o) { argument
17733 if(!o) o = new_buf(29);
17734 o.write_shift(-4, 0);
17735 o.write_shift(-4, 460);
17736 o.write_shift(4, 28800);
17737 o.write_shift(4, 17600);
17738 o.write_shift(4, 500);
17739 o.write_shift(4, idx);
17740 o.write_shift(4, idx);
17742 o.write_shift(1, flags);
17743 return o.length > o.l ? o.slice(0, o.l) : o;
17774 var o = new_buf(12 * L + 28);
17775 o.write_shift(4, L + 2);
17776 o.write_shift(4, 0); o.write_shift(4, -2); o.write_shift(4, -2); // workbook-level reference
17777 o.write_shift(4, 0); o.write_shift(4, -1); o.write_shift(4, -1); // #REF!...
17779 o.write_shift(4, 0); o.write_shift(4, i); o.write_shift(4, i);
17781 return o;
17791 /*function write_BrtCalcProp(data, o) {
17792 if(!o) o = new_buf(26);
17793 o.write_shift(4,0); // force recalc
17794 o.write_shift(4,1);
17795 o.write_shift(4,0);
17796 write_Xnum(0, o);
17797 o.write_shift(-4, 1023);
17798 o.write_shift(1, 0x33);
17799 o.write_shift(1, 0x00);
17800 return o;
17804 /*function write_BrtFileRecover(data, o) {
17805 if(!o) o = new_buf(1);
17806 o.write_shift(1,0);
17807 return o;
17954 function safe_format_xlml(cell/*:Cell*/, nf, o) { argument
17956 if(!o || o.cellText !== false) try {
17966 } catch(e) { if(o.WTF) throw e; }
17969 if(o.cellNF) cell.z = z;
17970 if(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {
17973 } catch(e) { if(o.WTF) throw e; }
17987 function parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) { argument
17988 var nf = "General", sid = cell.StyleID, S = {}; o = o || {};
18019 case 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;
18025 safe_format_xlml(cell, nf, o);
18026 if(o.cellFormula !== false) {
18045 if(o.cellStyles) {
18830 var o/*:Array<string>*/ = [];
18832 if(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));
18834 if(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));
18835 return o.join("");
18852 var o = /*::(*/{"ss:ID": "s" + (21+id)}/*:: :any)*/; class in AnonymousFunction701aad5b8300
18853 styles.push(writextag('Style', payload.join(""), o));
18891 var o/*:Array<string>*/ = [];
18908 o.push("<PageSetup>");
18909 if(ws['!margins'].header) o.push(writextag("Header", null, {'x:Margin':ws['!margins'].header}));
18910 if(ws['!margins'].footer) o.push(writextag("Footer", null, {'x:Margin':ws['!margins'].footer}));
18911 o.push(writextag("PageMargins", null, {
18917 o.push("</PageSetup>");
18935 …if(wb.Workbook.Sheets[idx].Hidden) o.push(writextag("Visible", (wb.Workbook.Sheets[idx].Hidden == …
18939 if(i == idx) o.push("<Selected/>");
18945 if(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push("<DisplayRightToLeft/>");
18973 o.push(writetag("ProtectContents", "True"));
18974 if(ws['!protect'].objects) o.push(writetag("ProtectObjects", "True"));
18975 if(ws['!protect'].scenarios) o.push(writetag("ProtectScenarios", "True"));
18976 …if(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(…
18977 …else if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(…
18990 ].forEach(function(x) { if(ws['!protect'][x[0]]) o.push("<"+x[1]+"/>"); });
18993 if(o.length == 0) return "";
18994 return writextag("WorksheetOptions", o.join(""), {xmlns:XLMLNS.x});
19049 var o = '<Row ss:Index="' + (R+1) + '"';
19052 if(row.hpx) o += ' ss:AutoFitHeight="0" ss:Height="' + row.hpx + '"';
19053 if(row.hidden) o += ' ss:Hidden="1"';
19055 return o + '>';
19062 var o/*:Array<string>*/ = [];
19070 o.push(writextag("Column",null,k));
19091 if(row.length > 2) o.push(row.join(""));
19093 return o.join("");
19096 var o/*:Array<string>*/ = [];
19101 if(t.length > 0) o.push("<Names>" + t + "</Names>");
19105 if(t.length > 0) o.push("<Table>" + t + "</Table>");
19108 o.push(write_ws_xlml_wsopts(ws, opts, idx, wb));
19110 …if(ws["!autofilter"]) o.push('<AutoFilter x:Range="' + a1_to_rc(fix_range(ws["!autofilter"].ref), …
19112 return o.join("");
19136 'xmlns:o': XLMLNS.o,
19146 var o = obj.content;
19147 /*:: if(o == null) return; */
19150 o.l = 28;
19152 v.AnsiUserType = o.read_shift(0, "lpstr-ansi");
19153 v.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);
19155 if(o.length - o.l <= 4) return v;
19157 var m/*:number*/ = o.read_shift(4);
19159 o.l-=4; v.Reserved1 = o.read_shift(0, "lpstr-ansi");
19161 if(o.length - o.l <= 4) return v;
19162 m = o.read_shift(4);
19164 v.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);
19166 m = o.read_shift(4);
19168 o.l-=4; v.Reserved2 = o.read_shift(0, "lpwstr");
19758 function parse_xls_props(cfb/*:CFBContainer*/, props, o) { argument
19764 } catch(e) {if(o.WTF) throw e;/* empty */}
19771 } catch(e) {if(o.WTF) throw e;/* empty */}
19774 load_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);
19852 var o = opts || {};
19855 switch(o.bookType || "xls") {
19856 case "xls": o.bookType = "biff8";
19858 case "xla": if(!o.bookType) o.bookType = "xla";
19860 case "biff8": wbpath = "/Workbook"; o.biff = 8; break;
19861 case "biff5": wbpath = "/Book"; o.biff = 5; break;
19862 default: throw new Error("invalid type " + o.bookType + " for XLS CFB");
19864 CFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));
19865 if(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);
19867 …if(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == "str…
21208 var o = ba.next(4);
21209 o.write_shift(2, t);
21210 o.write_shift(2, len);
21222 var o = ba.next(4);
21223 o.write_shift(2, t);
21224 o.write_shift(2, w);
21228 o = ba.next(4);
21229 o.write_shift(2, 0x3c); // TODO: figure out correct continue type
21232 o.write_shift(2, w);
21304 var o = opts || {};
21305 if(DENSE != null && o.dense == null) o.dense = DENSE;
21308 for(var i=0;i<wb.SheetNames.length;++i) if(wb.SheetNames[i] == o.sheet) idx=i;
21309 …if(idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet) throw new Error("Sheet not found: " + o.s…
21310 …write_biff_rec(ba, (o.biff == 4 ? 0x0409 : (o.biff == 3 ? 0x0209 : 0x0009)), write_BOF(wb, 0x10, o
21312 write_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);
21339 var o = new_buf(19);
21340 o.write_shift(4, 0x867); o.write_shift(4, 0); o.write_shift(4, 0);
21341 o.write_shift(2, 3); o.write_shift(1, 1); o.write_shift(4, 0);
21342 write_biff_rec(ba, 0x0867 /* FeatHdr */, o);
21344 o = new_buf(39);
21345 o.write_shift(4, 0x868); o.write_shift(4, 0); o.write_shift(4, 0);
21346 o.write_shift(2, 3); o.write_shift(1, 0); o.write_shift(4, 0);
21347 o.write_shift(2, 1); o.write_shift(4, 4); o.write_shift(2, 0);
21348 write_Ref8U(safe_decode_range(ws['!ref']||"A1"), o);
21349 o.write_shift(4, 4);
21350 write_biff_rec(ba, 0x0868 /* Feat */, o);
21565 var o = opts || {};
21574 o.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;
21575 o.ssf = wb.SSF;
21578 o.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;
21579 fix_write_opts(o);
21581 o.cellXfs = [];
21582 get_cell_style(o.cellXfs, {}, {revssf:{"General":0}});
21586 for(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);
21587 bufs.unshift(write_biff8_global(wb, bufs, o));
21601 var o = opts || {};
21602 switch(o.biff || 2) {
21606 throw new Error("invalid type " + o.bookType + " for BIFF");
21648 var o/*:Cell*/ = {t:'s', v:m}; class in html_to_sheet
21650 else if(m === 'TRUE') o = {t:'b', v:true};
21651 else if(m === 'FALSE') o = {t:'b', v:false};
21652 else if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};
21654 o = ({t:'d', v:parseDate(m)}/*:any*/); class in html_to_sheet
21655 if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);
21656 o.z = opts.dateNF || table_fmt[14];
21658 if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }
21659 else ws[encode_cell({r:R, c:C})] = o;
21667 function make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*… argument
21681 var cell = o.dense ? (ws[R]||[])[C] : ws[coord];
21687 if(o.editable) w = '<span contenteditable="true">' + w + '</span>';
21694 sp.id = (o.id || "sjs") + "-" + coord;
21718 function make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ { argument
21720 return out.join("") + '<table' + (o && o.id ? ' id="' + o.id + '"' : "") + '>';
21724 var o = opts || {};
21725 var header = o.header != null ? o.header : HTML_BEGIN;
21726 var footer = o.footer != null ? o.footer : HTML_END;
21729 o.dense = Array.isArray(ws);
21730 out.push(make_html_preamble(ws, r, o));
21731 for(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));
21787 var o/*:Cell*/ = {t:'s', v:v}; class in sheet_add_dom
21790 if(v.length == 0) o.t = _t || 'z';
21792 else if(v === 'TRUE') o = {t:'b', v:true};
21793 else if(v === 'FALSE') o = {t:'b', v:false};
21794 else if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};
21796 o = ({t:'d', v:parseDate(v)}/*:any*/); class in sheet_add_dom
21797 if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);
21798 o.z = opts.dateNF || table_fmt[14];
21801 if(o.z === undefined && z != null) o.z = z;
21808 …if(l && l.charAt(0) != "#" && l.slice(0, 11).toLowerCase() != 'javascript:') o.l = ({ Target: l });
21809 if(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }
21810 else ws[encode_cell({c:C + or_C, r:R + or_R})] = o;
21830 var o = sheet_to_workbook(parse_dom_table(table, opts), opts);
21831 //o.bookType = "dom"; // TODO: define a type for this
21832 return o;
22841 var o/*:Array<string>*/ = [];
22842o.push(' <table:table table:name="' + escapexml(wb.SheetNames[i]) + '" table:style-name="ta1"…
22847 …for(C = 0; C <= range.e.c; ++C) o.push(' <table:table-column' + (ws["!cols"][C] ? ' table:s…
22852 o.push(' <table:table-row' + H + '></table:table-row>\n');
22856 o.push(' <table:table-row' + H + '>\n');
22857 for(C=0; C < range.s.c; ++C) o.push(null_cell_xml);
22870 if(skip) { o.push(covered_cell_xml); continue; }
22882 if(!cell) { o.push(null_cell_xml); continue; }
22905 default: o.push(null_cell_xml); continue;
22916o.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\n');
22918 o.push(' </table:table-row>\n');
22920 if((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, i));
22921 o.push(' </table:table>\n');
22922 return o.join("");
22925 var write_automatic_styles_ods = function(o/*:Array<string>*/, wb) { argument
22926 o.push(' <office:automatic-styles>\n');
22939 o.push(' <style:style style:name="co' + cidx + '" style:family="table-column">\n');
22940o.push(' <style:table-column-properties fo:break-before="auto" style:column-width="' + w + '"/>\…
22941 o.push(' </style:style>\n');
22955 o.push(' <style:style style:name="ro' + ridx + '" style:family="table-row">\n');
22956o.push(' <style:table-row-properties fo:break-before="auto" style:row-height="' + h + '"/>\n');
22957 o.push(' </style:style>\n');
22964 o.push(' <style:style style:name="ta1" style:family="table" style:master-page-name="mp1">\n');
22965 o.push(' <style:table-properties table:display="true" style:writing-mode="lr-tb"/>\n');
22966 o.push(' </style:style>\n');
22968 o.push(' <number:date-style style:name="N37" number:automatic-order="true">\n');
22969 o.push(' <number:month number:style="long"/>\n');
22970 o.push(' <number:text>/</number:text>\n');
22971 o.push(' <number:day number:style="long"/>\n');
22972 o.push(' <number:text>/</number:text>\n');
22973 o.push(' <number:year/>\n');
22974 o.push(' </number:date-style>\n');
22987 if(out) { nfs[c.z] = "N" + nfi; ++nfi; o.push(out + "\n"); }
22991o.push(' <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default…
22993o.push('<style:style style:name="ce' + nfs[nf].slice(1) + '" style:family="table-cell" style:paren…
22998 o.push(' </office:automatic-styles>\n');
23003 var o = [XML_HEADER];
23051 o.push('<office:document' + attr + fods + '>\n');
23052o.push(write_meta_ods().replace(/<office:document-meta.*?>/, "").replace(/<\/office:document-meta>…
23054 } else o.push('<office:document-content' + attr + '>\n');
23055 // o.push(' <office:scripts/>\n');
23056 var nfs = write_automatic_styles_ods(o, wb);
23057 o.push(' <office:body>\n');
23058 o.push(' <office:spreadsheet>\n');
23059 …if(((wb.Workbook||{}).WBProps||{}).date1904) o.push(' <table:calculation-settings table:case-…
23060 …for(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i,…
23061 if((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, -1));
23062 o.push(' </office:spreadsheet>\n');
23063 o.push(' </office:body>\n');
23064 if(opts.bookType == "fods") o.push('</office:document>');
23065 else o.push('</office:document-content>');
23066 return o.join("");
24169 var o;
24171 o = decompress_iwa_file(s.content);
24177 packets = parse_iwa_file(o);
25023 function fix_opts_func(defaults/*:Array<Array<any> >*/)/*:{(o:any):void}*/ {
25661 function firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array<number>*/ { argument
25663 switch((o||{}).type || "base64") {
25668 default: throw new Error("Unrecognized type " + (o && o.type || "undefined"));
25680 var o = opts||{};
25681 if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64";
25682 zip = zip_read(d, o);
25683 return parse_zip(zip, o);
25686 function read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ { argument
25690 case 0x3C: return parse_xlml(data.slice(i),o);
25693 return PRN.to_workbook(data, o);
25696 function read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ { argument
25697 var str = "", bytes = firstbyte(data, o);
25698 switch(o.type) {
25703 default: throw new Error("Unrecognized type " + o.type);
25706 o.type = "binary";
25707 return read_plaintext(str, o);
25710 function read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ { argument
25712 if(o.type == 'base64') d = Base64_decode(d);
25714 o.type = "binary";
25715 return read_plaintext(d, o);
25722 function read_prn(data, d, o, str) { argument
25723 if(str) { o.type = "string"; return PRN.to_workbook(data, o); }
25724 return PRN.to_workbook(d, o);
25729 var o = opts||{};
25730 …if(o.codepage && typeof $cptable === "undefined") console.error("Codepage tables are not loaded. …
25731 …a instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = "array", o));
25732 …if(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Den…
25734 if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }
25736 if(o.dateNF) _ssfopts.dateNF = o.dateNF;
25737 if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64";
25738 …if(o.type == "file") { o.type = has_buf ? "buffer" : "binary"; d = read_binary(data); if(typeof Ui…
25739 if(o.type == "string") { str = true; o.type = "binary"; o.codepage = 65001; d = bstrify(data); }
25740 …if(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof …
25744 if(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}
25746 switch((n = firstbyte(d, o))[0]) {
25747 …0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;
25748 case 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;
25749 case 0x3C: return parse_xlml(d, o);
25752 if(n[1] === 0x44) return read_wb_ID(d, o);
25754 …case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;
25755 … return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);
25756 case 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);
25758 if(n[1] === 0xFE) { return read_utf16(d, o); }
25759 else if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);
25763 if(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);
25764 if(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);
25767 case 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);
25768 …case 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return rtf_to_workbook(d, o); break;
25769 case 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);
25777 …BF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);
25778 return read_prn(data, d, o, str);
25782 var o = opts||{}; o.type = 'file';
25783 return readSync(filename, o);
25785 function write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ { argument
25786 switch(o.type) {
25788 case "buffer": case "array": o.type = ""; break;
25789 case "file": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : ""}));
25790 case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files");
25791 default: throw new Error("Unrecognized type " + o.type);
25793 return CFB.write(cfb, o);
25807 var o = dup(opts||{});
25808 var z = write_zip(wb, o);
25809 return write_zip_denouement(z, o);
25812 var o = dup(opts||{});
25813 var z = write_zip_xlsx(wb, o);
25814 return write_zip_denouement(z, o);
25816 function write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ { argument
25819 if(o.compression) oopts.compression = 'DEFLATE';
25820 if(o.password) oopts.type = ftype;
25821 else switch(o.type) {
25824 case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files");
25827 default: throw new Error("Unrecognized type " + o.type);
25829 …, "string": "binary"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.ge…
25832 if(o.type == "binary" || o.type == "base64") return out;
25837 …if(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.p…
25839 if(o.type === "file") return write_dl(o.file, out);
25840 return o.type == "string" ? utf8read(/*::(*/out/*:: :any)*/) : out;
25844 var o = opts||{};
25845 var cfb/*:CFBContainer*/ = write_xlscfb(wb, o);
25846 return write_cfb_ctr(cfb, o);
25851 var o = bom + out;
25853 case "base64": return Base64_encode(utf8write(o));
25854 case "binary": return utf8write(o);
25856 case "file": return write_dl(opts.file, o, 'utf8');
25858 if(has_buf) return Buffer_from(o, 'utf8');
25859 else if(typeof TextEncoder !== "undefined") return new TextEncoder().encode(o);
25860 …else return write_string_type(o, {type:'binary'}).split("").map(function(c) { return c.charCodeAt(…
25899 var o = dup(opts||{});
25900 if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }
25901 …if(o.type == "array") { o.type = "binary"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.…
25902 return write_zip_typeXLSX(wb, o);
25908 var o = dup(opts||{});
25909 if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }
25910 …if(o.type == "array") { o.type = "binary"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type…
25912 if(o.sheet) {
25913 if(typeof o.sheet == "number") idx = o.sheet;
25914 else idx = wb.SheetNames.indexOf(o.sheet);
25915 if(!wb.SheetNames[idx]) throw new Error("Sheet not found: " + o.sheet + " : " + (typeof o.sheet));
25917 switch(o.bookType || 'xlsb') {
25919 case 'xlml': return write_string_type(write_xlml(wb, o), o);
25921 case 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb), o);
25923 case 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);
25924 case 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);
25925 case 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, "\ufeff");
25926 case 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);
25927 case 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);
25928 case 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);
25929 case 'rtf': return write_string_type(sheet_to_rtf(wb.Sheets[wb.SheetNames[idx]], o), o);
25930 case 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);
25931 case 'fods': return write_string_type(write_ods(wb, o), o);
25932 case 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);
25933 case 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);
25934 case 'biff2': if(!o.biff) o.biff = 2; /* falls through */
25935 case 'biff3': if(!o.biff) o.biff = 3; /* falls through */
25936 case 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);
25937 case 'biff5': if(!o.biff) o.biff = 5; /* falls through */
25940 case 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);
25946 case 'ods': return write_zip_type(wb, o);
25947 default: throw new Error ("Unrecognized bookType |" + o.bookType + "|");
25951 function resolve_book_type(o/*:WriteFileOpts*/) { argument
25952 if(o.bookType) return;
25960 var ext = o.file.slice(o.file.lastIndexOf(".")).toLowerCase();
25961 if(ext.match(/^\.[a-z]+$/)) o.bookType = ext.slice(1);
25962 o.bookType = _BT[o.bookType] || o.bookType;
25966 var o = opts||{}; o.type = 'file';
25967 o.file = filename;
25968 resolve_book_type(o);
25969 return writeSync(wb, o);
25973 var o = opts||{}; o.type = 'file';
25974 o.file = filename;
25975 resolve_book_type(o);
25976 return writeSyncXLSX(wb, o);
25981 var o = opts||{}; o.type = 'file';
25982 o.file = filename;
25983 resolve_book_type(o);
25984 o.type = 'buffer';
25986 return _fs.writeFile(filename, writeSync(wb, o), _cb);
25994 …:Array<string>*/, header/*:number*/, hdr/*:Array<any>*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/… argument
25996 var defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, "raw");
26024 …r[C]] = raw && (val.t !== "n" || (val.t === "n" && o.rawNumbers !== false)) ? v : format_cell(val,…
26037 var o = opts || {};
26038 var range = o.range != null ? o.range : sheet["!ref"];
26039 if(o.header === 1) header = 1;
26040 else if(o.header === "A") header = 2;
26041 else if(Array.isArray(o.header)) header = 3;
26042 else if(o.header == null) header = 0;
26057 var colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet["!cols"] || [];
26058 var rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet["!rows"] || [];
26066 case 3: hdr[C] = o.header[C - r.s.c]; break;
26069 vv = v = format_cell(val, null, o);
26081 var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);
26082 …if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] …
26089 …ber*/, cols/*:Array<string>*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*… argument
26094 var val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];
26098 txt = ''+(o.rawNumbers && val.t == "n" ? val.v : format_cell(val, null, o));
26099 …ength; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = …
26108 if(o.blankrows === false && isempty) return null;
26114 var o = opts == null ? {} : opts;
26117 var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0);
26118 var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0);
26121 o.dense = Array.isArray(sheet);
26122 var colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet["!cols"] || [];
26123 var rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet["!rows"] || [];
26128 row = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);
26130 if(o.strip) row = row.replace(endregex,"");
26131 if(row || (o.blankrows !== false)) out.push((w++ ? RS : "") + row);
26133 delete o.dense;
26141 var o = $cptable.utils.encode(1200, s, 'str');
26142 return String.fromCharCode(255) + String.fromCharCode(254) + o;
26180 var o = opts || {};
26181 var dense = _ws ? Array.isArray(_ws) : o.dense;
26183 var offset = +!o.skipHeader;
26186 if(ws && o.origin != null) {
26187 if(typeof o.origin == 'number') _R = o.origin;
26189 var _origin/*:CellAddress*/ = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin;
26202 var hdr/*:Array<string>*/ = o.header || [], C = 0;
26222 if(!o.cellDates) { t = 'n'; v = datenum(v); }
26223 z = (cell != null && cell.z && fmt_is_date(cell.z)) ? cell.z : (o.dateNF || table_fmt[14]);
26225 else if(v === null && o.nullError) { t = 'e'; v = 0; }
26413 var o = opts == null ? {} : opts;
26416 var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0);
26417 var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0);
26420 o.dense = Array.isArray(sheet);
26421 var colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet["!cols"] || [];
26422 var rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet["!rows"] || [];
26431 row = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);
26433 if(o.strip) row = row.replace(endregex,"");
26434 if(row || (o.blankrows !== false)) return stream.push((w++ ? RS : "") + row);
26445 var o = opts || {};
26446 var header = o.header != null ? o.header : HTML_BEGIN;
26447 var footer = o.footer != null ? o.footer : HTML_END;
26450 o.dense = Array.isArray(ws);
26451 stream.push(make_html_preamble(ws, r, o));
26460 stream.push(make_html_row(ws, r, R, o));
26474 var o = opts || {};
26475 var range = o.range != null ? o.range : sheet["!ref"];
26476 if(o.header === 1) header = 1;
26477 else if(o.header === "A") header = 2;
26478 else if(Array.isArray(o.header)) header = 3;
26492 var colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet["!cols"] || [];
26493 var rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet["!rows"] || [];
26501 case 3: hdr[C] = o.header[C - r.s.c]; break;
26504 vv = v = format_cell(val, null, o);
26518 var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);
26520 if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {