version bump 0.7.1: test now ignores missing files

apparently openpyxl removed a few test files from their suite :/
This commit is contained in:
SheetJS 2014-05-15 17:50:55 -07:00
parent d15b81e0e9
commit a1990758a0
19 changed files with 48 additions and 47 deletions

View File

@ -159,7 +159,7 @@ The exported `write` and `writeFile` functions accept an options argument:
- `bookSST` is slower and more memory intensive, but has better compatibility
with iOS Numbers
- `bookType = 'xlsb'` is stubbed and far from complete
- `bookType = 'xlsb'` is stubbed and far from complete
- The raw data is the only thing guaranteed to be saved. Formulae, formatting,
and other niceties are not serialized (pending CSF standardization)

View File

@ -95,11 +95,12 @@ try {
process.exit(4);
}
if(!program.quiet) console.error(target_sheet);
var oo = "";
if(!program.quiet) console.error(target_sheet);
if(program.formulae) oo = X.utils.get_formulae(ws).join("\n");
else if(program.json) oo = JSON.stringify(X.utils.sheet_to_row_object_array(ws));
else if(program.rawJs) oo = JSON.stringify(X.utils.sheet_to_row_object_array(ws,{raw:true}));
else oo = X.utils.make_csv(ws, {FS:program.fieldSep, RS:program.rowSep});
if(program.output) fs.writeFileSync(program.output, oo);
else console.log(oo);

View File

@ -1 +1 @@
XLSX.version = '0.7.0';
XLSX.version = '0.7.1';

View File

@ -223,7 +223,7 @@ function write_ct(ct, opts) {
v = ct[w][0];
o.push(writextag('Override', null, {
'PartName': (v[0] == '/' ? "":"/") + v,
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
}));
}
};
@ -231,7 +231,7 @@ function write_ct(ct, opts) {
ct[w].forEach(function(v) {
o.push(writextag('Override', null, {
'PartName': (v[0] == '/' ? "":"/") + v,
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
}));
});
};
@ -245,7 +245,7 @@ function write_ct(ct, opts) {
};
f1('workbooks');
f2('sheets');
f3('themes');
f3('themes');
['strs', 'styles'].forEach(f1);
['coreprops', 'extprops', 'custprops'].forEach(f3);
if(o.length>2){ o.push('</Types>'); o[1]=o[1].replace("/>",">"); }

View File

@ -58,7 +58,7 @@ function write_cust_props(cp, opts) {
o.push(CUST_PROPS_XML_ROOT);
if(!cp) return o.join("");
var pid = 1;
keys(cp).forEach(function(k) { ++pid;
keys(cp).forEach(function(k) { ++pid;
o.push(writextag('property', write_vt(cp[k]), {
'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',
'pid': pid,

View File

@ -180,7 +180,7 @@ var write_sst_xml = function(sst, opts) {
count: sst.Count,
uniqueCount: sst.Unique
}));
sst.forEach(function(s) { o.push("<si>" + (s.r ? s.r : "<t>" + escapexml(s.t) + "</t>") + "</si>"); });
sst.forEach(function(s) { o.push("<si>" + (s.r ? s.r : "<t>" + escapexml(s.t) + "</t>") + "</si>"); });
if(o.length>2){ o.push('</sst>'); o[1]=o[1].replace("/>",">"); }
return o.join("");
};

View File

@ -19,8 +19,7 @@ function write_numFmts(NF, opts) {
var o = [];
o.push("<numFmts>");
[[5,8],[23,26],[41,44],[63,66],[164,392]].forEach(function(r) {
for(var i = r[0]; i <= r[1]; ++i) if(NF[i])
o.push(writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));
for(var i = r[0]; i <= r[1]; ++i) if(NF[i]) o.push(writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));
});
o.push("</numFmts>");
if(o.length === 2) return "";

View File

@ -130,7 +130,7 @@ var WS_XML_ROOT = writextag('worksheet', null, {
var write_ws_xml_cell = function(cell, ref, ws, opts, idx, wb) {
var v = writextag('v', escapexml(String(cell.v))), o = {r:ref};
if(cell.z) o.s = get_cell_style(opts.cellXfs, cell, opts);
if(cell.z) o.s = get_cell_style(opts.cellXfs, cell, opts);
/* TODO: cell style */
if(typeof cell.v === 'undefined') return "";
switch(cell.t) {
@ -142,7 +142,7 @@ var write_ws_xml_cell = function(cell, ref, ws, opts, idx, wb) {
} break;
case 'n': o.t = "n"; return writextag('c', v, o);
case 'b': o.t = "b"; return writextag('c', v, o);
case 'e': o.t = "e"; return writextag('c', v, o);
case 'e': o.t = "e"; return writextag('c', v, o);
}
};

View File

@ -2,7 +2,7 @@ function add_rels(rels, rId, f, type, relobj) {
if(!relobj) relobj = {};
if(!rels['!id']) rels['!id'] = {};
relobj.Id = 'rId' + rId;
relobj.Type = type;
relobj.Type = type;
relobj.Target = f;
if(rels['!id'][relobj.Id]) throw new Error("Cannot rewrite rId " + rId);
rels['!id'][relobj.Id] = relobj;
@ -65,7 +65,7 @@ function write_zip(wb, opts) {
}
/* TODO: something more intelligent with themes */
/* f = "xl/theme/theme1.xml"
zip.file(f, write_theme());
ct.themes.push(f);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

23
dist/xlsx.js vendored
View File

@ -2,7 +2,7 @@
/* vim: set ts=2: */
var XLSX = {};
(function(XLSX){
XLSX.version = '0.7.0';
XLSX.version = '0.7.1';
var current_codepage = 1252, current_cptable;
if(typeof module !== "undefined" && typeof require !== 'undefined') {
if(typeof cptable === 'undefined') cptable = require('codepage');
@ -1115,7 +1115,7 @@ function write_ct(ct, opts) {
v = ct[w][0];
o.push(writextag('Override', null, {
'PartName': (v[0] == '/' ? "":"/") + v,
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
}));
}
};
@ -1123,7 +1123,7 @@ function write_ct(ct, opts) {
ct[w].forEach(function(v) {
o.push(writextag('Override', null, {
'PartName': (v[0] == '/' ? "":"/") + v,
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
}));
});
};
@ -1137,7 +1137,7 @@ function write_ct(ct, opts) {
};
f1('workbooks');
f2('sheets');
f3('themes');
f3('themes');
['strs', 'styles'].forEach(f1);
['coreprops', 'extprops', 'custprops'].forEach(f3);
if(o.length>2){ o.push('</Types>'); o[1]=o[1].replace("/>",">"); }
@ -1405,7 +1405,7 @@ function write_cust_props(cp, opts) {
o.push(CUST_PROPS_XML_ROOT);
if(!cp) return o.join("");
var pid = 1;
keys(cp).forEach(function(k) { ++pid;
keys(cp).forEach(function(k) { ++pid;
o.push(writextag('property', write_vt(cp[k]), {
'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',
'pid': pid,
@ -1597,7 +1597,7 @@ var write_sst_xml = function(sst, opts) {
count: sst.Count,
uniqueCount: sst.Unique
}));
sst.forEach(function(s) { o.push("<si>" + (s.r ? s.r : "<t>" + escapexml(s.t) + "</t>") + "</si>"); });
sst.forEach(function(s) { o.push("<si>" + (s.r ? s.r : "<t>" + escapexml(s.t) + "</t>") + "</si>"); });
if(o.length>2){ o.push('</sst>'); o[1]=o[1].replace("/>",">"); }
return o.join("");
};
@ -1648,8 +1648,7 @@ function write_numFmts(NF, opts) {
var o = [];
o.push("<numFmts>");
[[5,8],[23,26],[41,44],[63,66],[164,392]].forEach(function(r) {
for(var i = r[0]; i <= r[1]; ++i) if(NF[i])
o.push(writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));
for(var i = r[0]; i <= r[1]; ++i) if(NF[i]) o.push(writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));
});
o.push("</numFmts>");
if(o.length === 2) return "";
@ -2178,7 +2177,7 @@ var WS_XML_ROOT = writextag('worksheet', null, {
var write_ws_xml_cell = function(cell, ref, ws, opts, idx, wb) {
var v = writextag('v', escapexml(String(cell.v))), o = {r:ref};
if(cell.z) o.s = get_cell_style(opts.cellXfs, cell, opts);
if(cell.z) o.s = get_cell_style(opts.cellXfs, cell, opts);
/* TODO: cell style */
if(typeof cell.v === 'undefined') return "";
switch(cell.t) {
@ -2190,7 +2189,7 @@ var write_ws_xml_cell = function(cell, ref, ws, opts, idx, wb) {
} break;
case 'n': o.t = "n"; return writextag('c', v, o);
case 'b': o.t = "b"; return writextag('c', v, o);
case 'e': o.t = "e"; return writextag('c', v, o);
case 'e': o.t = "e"; return writextag('c', v, o);
}
};
@ -3876,7 +3875,7 @@ function add_rels(rels, rId, f, type, relobj) {
if(!relobj) relobj = {};
if(!rels['!id']) rels['!id'] = {};
relobj.Id = 'rId' + rId;
relobj.Type = type;
relobj.Type = type;
relobj.Target = f;
if(rels['!id'][relobj.Id]) throw new Error("Cannot rewrite rId " + rId);
rels['!id'][relobj.Id] = relobj;
@ -3939,7 +3938,7 @@ function write_zip(wb, opts) {
}
/* TODO: something more intelligent with themes */
/* f = "xl/theme/theme1.xml"
zip.file(f, write_theme());
ct.themes.push(f);

2
dist/xlsx.min.js vendored

File diff suppressed because one or more lines are too long

2
dist/xlsx.min.map vendored

File diff suppressed because one or more lines are too long

View File

@ -1,15 +1,15 @@
{
"name": "xlsx",
"version": "0.7.0",
"version": "0.7.1",
"author": "sheetjs",
"description": "XLSB / XLSX / XLSM (Excel 2007+ Spreadsheet) parser",
"description": "XLSB/XLSX/XLSM (Excel 2007+ Spreadsheet) parser and writer",
"keywords": [ "xlsx", "xlsb", "xlsm", "office", "excel", "spreadsheet" ],
"bin": {
"xlsx": "./bin/xlsx.njs"
},
"main": "./xlsx",
"dependencies": {
"ssf":"~0.6.4",
"ssf":"~0.6.5",
"codepage":"1.x",
"cfb":"",
"jszip":"2.2.0",
@ -17,6 +17,7 @@
},
"devDependencies": {
"mocha":"",
"xlsjs":"",
"uglify-js":"",
"jasmine-node": "x"
},

View File

@ -127,6 +127,7 @@ function parsetest(x, wb, full, ext) {
describe('should parse test files', function() {
files.forEach(function(x) {
if(!fs.existsSync(dir + x)) return;
it(x, x.substr(-8) == ".pending" ? null : function() {
var wb = X.readFile(dir + x, opts);
parsetest(x, wb, true);
@ -136,6 +137,7 @@ describe('should parse test files', function() {
});
});
fileA.forEach(function(x) {
if(!fs.existsSync(dir + x)) return;
it(x, x.substr(-8) == ".pending" ? null : function() {
var wb = X.readFile(dir + x, {WTF:opts.wtf, sheetRows:10});
parsetest(x, wb, false);

23
xlsx.js
View File

@ -2,7 +2,7 @@
/* vim: set ts=2: */
var XLSX = {};
(function(XLSX){
XLSX.version = '0.7.0';
XLSX.version = '0.7.1';
var current_codepage = 1252, current_cptable;
if(typeof module !== "undefined" && typeof require !== 'undefined') {
if(typeof cptable === 'undefined') cptable = require('codepage');
@ -1115,7 +1115,7 @@ function write_ct(ct, opts) {
v = ct[w][0];
o.push(writextag('Override', null, {
'PartName': (v[0] == '/' ? "":"/") + v,
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
}));
}
};
@ -1123,7 +1123,7 @@ function write_ct(ct, opts) {
ct[w].forEach(function(v) {
o.push(writextag('Override', null, {
'PartName': (v[0] == '/' ? "":"/") + v,
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
'ContentType': CT_LIST[w][opts.bookType || 'xlsx']
}));
});
};
@ -1137,7 +1137,7 @@ function write_ct(ct, opts) {
};
f1('workbooks');
f2('sheets');
f3('themes');
f3('themes');
['strs', 'styles'].forEach(f1);
['coreprops', 'extprops', 'custprops'].forEach(f3);
if(o.length>2){ o.push('</Types>'); o[1]=o[1].replace("/>",">"); }
@ -1405,7 +1405,7 @@ function write_cust_props(cp, opts) {
o.push(CUST_PROPS_XML_ROOT);
if(!cp) return o.join("");
var pid = 1;
keys(cp).forEach(function(k) { ++pid;
keys(cp).forEach(function(k) { ++pid;
o.push(writextag('property', write_vt(cp[k]), {
'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',
'pid': pid,
@ -1597,7 +1597,7 @@ var write_sst_xml = function(sst, opts) {
count: sst.Count,
uniqueCount: sst.Unique
}));
sst.forEach(function(s) { o.push("<si>" + (s.r ? s.r : "<t>" + escapexml(s.t) + "</t>") + "</si>"); });
sst.forEach(function(s) { o.push("<si>" + (s.r ? s.r : "<t>" + escapexml(s.t) + "</t>") + "</si>"); });
if(o.length>2){ o.push('</sst>'); o[1]=o[1].replace("/>",">"); }
return o.join("");
};
@ -1648,8 +1648,7 @@ function write_numFmts(NF, opts) {
var o = [];
o.push("<numFmts>");
[[5,8],[23,26],[41,44],[63,66],[164,392]].forEach(function(r) {
for(var i = r[0]; i <= r[1]; ++i) if(NF[i])
o.push(writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));
for(var i = r[0]; i <= r[1]; ++i) if(NF[i]) o.push(writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));
});
o.push("</numFmts>");
if(o.length === 2) return "";
@ -2178,7 +2177,7 @@ var WS_XML_ROOT = writextag('worksheet', null, {
var write_ws_xml_cell = function(cell, ref, ws, opts, idx, wb) {
var v = writextag('v', escapexml(String(cell.v))), o = {r:ref};
if(cell.z) o.s = get_cell_style(opts.cellXfs, cell, opts);
if(cell.z) o.s = get_cell_style(opts.cellXfs, cell, opts);
/* TODO: cell style */
if(typeof cell.v === 'undefined') return "";
switch(cell.t) {
@ -2190,7 +2189,7 @@ var write_ws_xml_cell = function(cell, ref, ws, opts, idx, wb) {
} break;
case 'n': o.t = "n"; return writextag('c', v, o);
case 'b': o.t = "b"; return writextag('c', v, o);
case 'e': o.t = "e"; return writextag('c', v, o);
case 'e': o.t = "e"; return writextag('c', v, o);
}
};
@ -3876,7 +3875,7 @@ function add_rels(rels, rId, f, type, relobj) {
if(!relobj) relobj = {};
if(!rels['!id']) rels['!id'] = {};
relobj.Id = 'rId' + rId;
relobj.Type = type;
relobj.Type = type;
relobj.Target = f;
if(rels['!id'][relobj.Id]) throw new Error("Cannot rewrite rId " + rId);
rels['!id'][relobj.Id] = relobj;
@ -3939,7 +3938,7 @@ function write_zip(wb, opts) {
}
/* TODO: something more intelligent with themes */
/* f = "xl/theme/theme1.xml"
zip.file(f, write_theme());
ct.themes.push(f);