forked from sheetjs/sheetjs
updating to 0.12.11
This commit is contained in:
parent
e4bc2ce1ce
commit
c72dd3a7ba
@ -1326,6 +1326,27 @@ describe('write features', function() {
|
||||
assert(str.indexOf("<b>abc</b>") > 0);
|
||||
});
|
||||
});
|
||||
describe('sheet range limits', function() { [
|
||||
["biff2", "IV16384"],
|
||||
["biff5", "IV16384"],
|
||||
["biff8", "IV65536"],
|
||||
["xlsx", "XFD1048576"],
|
||||
["xlsb", "XFD1048576"]
|
||||
].forEach(function(r) { it(r[0], function() {
|
||||
var C = X.utils.decode_cell(r[1]);
|
||||
var wopts = {bookType:r[0], type:'binary', WTF:1};
|
||||
var wb = { SheetNames: ["Sheet1"], Sheets: { Sheet1: {} } };
|
||||
|
||||
wb.Sheets.Sheet1['!ref'] = "A1:" + X.utils.encode_cell({r:0, c:C.c});
|
||||
X.write(wb, wopts);
|
||||
wb.Sheets.Sheet1['!ref'] = "A" + X.utils.encode_row(C.r - 5) + ":" + X.utils.encode_cell({r:C.r, c:0});
|
||||
X.write(wb, wopts);
|
||||
|
||||
wb.Sheets.Sheet1['!ref'] = "A1:" + X.utils.encode_cell({r:0, c:C.c+1});
|
||||
assert.throws(function() { X.write(wb, wopts); });
|
||||
wb.Sheets.Sheet1['!ref'] = "A" + X.utils.encode_row(C.r - 5) + ":" + X.utils.encode_cell({r:C.r+1, c:0});
|
||||
assert.throws(function() { X.write(wb, wopts); });
|
||||
}); }); });
|
||||
});
|
||||
|
||||
function seq(end/*:number*/, start/*:?number*/)/*:Array<number>*/ {
|
||||
|
28
xlsx.core.min.js
vendored
28
xlsx.core.min.js
vendored
File diff suppressed because one or more lines are too long
32
xlsx.full.min.js
vendored
32
xlsx.full.min.js
vendored
File diff suppressed because one or more lines are too long
42
xlsx.js
42
xlsx.js
@ -4,7 +4,7 @@
|
||||
/*global global, exports, module, require:false, process:false, Buffer:false, ArrayBuffer:false */
|
||||
var XLSX = {};
|
||||
(function make_xlsx(XLSX){
|
||||
XLSX.version = '0.12.10';
|
||||
XLSX.version = '0.12.11';
|
||||
var current_codepage = 1200, current_ansi = 1252;
|
||||
/*global cptable:true */
|
||||
if(typeof module !== "undefined" && typeof require !== 'undefined') {
|
||||
@ -4105,7 +4105,6 @@ function write_cust_props(cp) {
|
||||
if(!cp) return o.join("");
|
||||
var pid = 1;
|
||||
keys(cp).forEach(function custprop(k) { ++pid;
|
||||
// $FlowIgnore
|
||||
o[o.length] = (writextag('property', write_vt(cp[k]), {
|
||||
'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',
|
||||
'pid': pid,
|
||||
@ -11828,6 +11827,13 @@ function safe_format(p, fmtid, fillid, opts, themes, styles) {
|
||||
}
|
||||
} catch(e) { if(opts.WTF && styles.Fills) throw e; }
|
||||
}
|
||||
|
||||
function check_ws(ws, sname, i) {
|
||||
if(ws && ws['!ref']) {
|
||||
var range = safe_decode_range(ws['!ref']);
|
||||
if(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error("Bad range (" + i + "): " + ws['!ref']);
|
||||
}
|
||||
}
|
||||
function parse_ws_xml_dim(ws, s) {
|
||||
var d = safe_decode_range(s);
|
||||
if(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws["!ref"] = encode_range(d);
|
||||
@ -12299,7 +12305,14 @@ function write_ws_xml(idx, opts, wb, rels) {
|
||||
var s = wb.SheetNames[idx], sidx = 0, rdata = "";
|
||||
var ws = wb.Sheets[s];
|
||||
if(ws == null) ws = {};
|
||||
var ref = ws['!ref']; if(ref == null) ref = 'A1';
|
||||
var ref = ws['!ref'] || 'A1';
|
||||
var range = safe_decode_range(ref);
|
||||
if(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {
|
||||
if(opts.WTF) throw new Error("Range " + ref + " exceeds format limit A1:XFD1048576");
|
||||
range.e.c = Math.min(range.e.c, 0x3FFF);
|
||||
range.e.r = Math.min(range.e.c, 0xFFFFF);
|
||||
ref = encode_range(range);
|
||||
}
|
||||
if(!rels) rels = {};
|
||||
ws['!comments'] = [];
|
||||
ws['!drawing'] = [];
|
||||
@ -13217,6 +13230,11 @@ function write_ws_bin(idx, opts, wb, rels) {
|
||||
var s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};
|
||||
var c = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}
|
||||
var r = safe_decode_range(ws['!ref'] || "A1");
|
||||
if(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {
|
||||
if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:XFD1048576");
|
||||
r.e.c = Math.min(r.e.c, 0x3FFF);
|
||||
r.e.r = Math.min(r.e.c, 0xFFFFF);
|
||||
}
|
||||
ws['!links'] = [];
|
||||
/* passed back to write_zip and removed there */
|
||||
ws['!comments'] = [];
|
||||
@ -13550,6 +13568,7 @@ function check_wb(wb) {
|
||||
if(!wb.SheetNames.length) throw new Error("Workbook is empty");
|
||||
var Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];
|
||||
check_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);
|
||||
for(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);
|
||||
/* TODO: validate workbook */
|
||||
}
|
||||
/* 18.2 Workbook */
|
||||
@ -13600,7 +13619,7 @@ function parse_wb_xml(data, opts) {
|
||||
/* 18.2.1 bookViews CT_BookViews ? */
|
||||
case '<bookViews': case '<bookViews>': case '</bookViews>': break;
|
||||
/* 18.2.30 workbookView CT_BookView + */
|
||||
case '<workbookView': delete y[0]; wb.WBView.push(y); break;
|
||||
case '<workbookView': case '<workbookView/>': delete y[0]; wb.WBView.push(y); break;
|
||||
case '</workbookView>': break;
|
||||
|
||||
/* 18.2.20 sheets CT_Sheets 1 */
|
||||
@ -17546,6 +17565,12 @@ function write_ws_biff2_cell(ba, cell, R, C) {
|
||||
function write_ws_biff2(ba, ws, idx, opts) {
|
||||
var dense = Array.isArray(ws);
|
||||
var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = [];
|
||||
if(range.e.c > 0xFF || range.e.r > 0x3FFF) {
|
||||
if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384");
|
||||
range.e.c = Math.min(range.e.c, 0xFF);
|
||||
range.e.r = Math.min(range.e.c, 0x3FFF);
|
||||
ref = encode_range(range);
|
||||
}
|
||||
for(var R = range.s.r; R <= range.e.r; ++R) {
|
||||
rr = encode_row(R);
|
||||
for(var C = range.s.c; C <= range.e.c; ++C) {
|
||||
@ -17649,9 +17674,16 @@ function write_ws_biff8(idx, opts, wb) {
|
||||
var _WB = ((wb||{}).Workbook||{});
|
||||
var _sheet = ((_WB.Sheets||[])[idx]||{});
|
||||
var dense = Array.isArray(ws);
|
||||
var b8 = opts.biff == 8;
|
||||
var ref, rr = "", cols = [];
|
||||
var range = safe_decode_range(ws['!ref'] || "A1");
|
||||
var b8 = opts.biff == 8;
|
||||
var MAX_ROWS = b8 ? 65536 : 16384;
|
||||
if(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {
|
||||
if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384");
|
||||
range.e.c = Math.min(range.e.c, 0xFF);
|
||||
range.e.r = Math.min(range.e.c, MAX_ROWS-1);
|
||||
}
|
||||
|
||||
write_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));
|
||||
/* ... */
|
||||
write_biff_rec(ba, "CalcMode", writeuint16(1));
|
||||
|
Loading…
Reference in New Issue
Block a user