forked from sheetjs/sheetjs
		
	version bump 0.3.9: general format used by default
(when no format or style is found, use general) Other whitespace cleanup
This commit is contained in:
		
							parent
							
								
									a1ccaf511d
								
							
						
					
					
						commit
						9c9aad5df3
					
				| @ -101,13 +101,13 @@ var general_fmt = function(v) { | ||||
| 		else if(V >= 0.0001 && V < 0.001) o = v.toPrecision(6); | ||||
| 		else if(V >= Math.pow(10,10) && V < Math.pow(10,11)) o = v.toFixed(10).substr(0,12); | ||||
| 		else if(V > Math.pow(10,-9) && V < Math.pow(10,11)) { | ||||
| 			o = v.toFixed(12).replace(/(\.[0-9]*[1-9])0*$/,"$1").replace(/\.$/,"");  | ||||
| 			o = v.toFixed(12).replace(/(\.[0-9]*[1-9])0*$/,"$1").replace(/\.$/,""); | ||||
| 			if(o.length > 11+(v<0?1:0)) o = v.toPrecision(10); | ||||
| 			if(o.length > 11+(v<0?1:0)) o = v.toExponential(5); | ||||
| 		}  | ||||
| 		} | ||||
| 		else { | ||||
| 			o = v.toFixed(11).replace(/(\.[0-9]*[1-9])0*$/,"$1"); | ||||
| 				if(o.length > 11 + (v<0?1:0)) o = v.toPrecision(6);  | ||||
| 				if(o.length > 11 + (v<0?1:0)) o = v.toPrecision(6); | ||||
| 		} | ||||
| 		o = o.replace(/(\.[0-9]*[1-9])0+e/,"$1e").replace(/\.0*e/,"e"); | ||||
| 		return o.replace("e","E").replace(/\.0*$/,"").replace(/\.([0-9]*[^0])0*$/,".$1").replace(/(E[+-])([0-9])$/,"$1"+"0"+"$2"); | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| XLSX.version = '0.3.8'; | ||||
| XLSX.version = '0.3.9'; | ||||
|  | ||||
| @ -162,17 +162,17 @@ function parseSheet(data) { | ||||
| 			} | ||||
| 
 | ||||
| 			/* formatting */ | ||||
| 			if(cell.s && styles.CellXf) { /* TODO: second check is a hacked guard */ | ||||
| 			var fmtid = 0; | ||||
| 			if(cell.s && styles.CellXf) { | ||||
| 				var cf = styles.CellXf[cell.s]; | ||||
| 				if(cf && cf.numFmtId && cf.numFmtId !== 0) { | ||||
| 				if(cf && cf.numFmtId) fmtid = cf.numFmtId; | ||||
| 			} | ||||
| 					p.raw = p.v; | ||||
| 					p.rawt = p.t; | ||||
| 					try { | ||||
| 						p.v = SSF.format(cf.numFmtId,p.v,_ssfopts); | ||||
| 				p.v = SSF.format(fmtid,p.v,_ssfopts); | ||||
| 						p.t = 'str'; | ||||
| 					} catch(e) { p.v = p.raw; } | ||||
| 				} | ||||
| 			} | ||||
| 			} catch(e) { p.v = p.raw; p.t = p.rawt; } | ||||
| 
 | ||||
| 			s[cell.r] = p; | ||||
| 		}); | ||||
| @ -456,19 +456,19 @@ function parseRels(data, currentFilePath) { | ||||
| 	var rels = {}; | ||||
| 
 | ||||
| 	var resolveRelativePathIntoAbsolute = function (to) { | ||||
| 	    var toksFrom = currentFilePath.split('/'); | ||||
| 	 	toksFrom.pop(); // folder path
 | ||||
| 	    var toksTo = to.split('/'); | ||||
| 	    var reversed = []; | ||||
| 	    while (toksTo.length !== 0) { | ||||
| 	        var tokTo = toksTo.shift(); | ||||
| 	        if (tokTo === '..') { | ||||
| 	            toksFrom.pop(); | ||||
| 	        } else if (tokTo !== '.') { | ||||
| 	            toksFrom.push(tokTo); | ||||
| 	        } | ||||
| 	    } | ||||
| 	    return toksFrom.join('/'); | ||||
| 		var toksFrom = currentFilePath.split('/'); | ||||
| 		toksFrom.pop(); // folder path
 | ||||
| 		var toksTo = to.split('/'); | ||||
| 		var reversed = []; | ||||
| 		while (toksTo.length !== 0) { | ||||
| 			var tokTo = toksTo.shift(); | ||||
| 			if (tokTo === '..') { | ||||
| 				toksFrom.pop(); | ||||
| 			} else if (tokTo !== '.') { | ||||
| 				toksFrom.push(tokTo); | ||||
| 			} | ||||
| 		} | ||||
| 		return toksFrom.join('/'); | ||||
| 	} | ||||
| 
 | ||||
| 	data.match(/<[^>]*>/g).forEach(function(x) { | ||||
|  | ||||
| @ -15,15 +15,14 @@ function sheet_to_row_object_array(sheet, opts){ | ||||
| 	var val, row, r, hdr = {}, isempty, R, C, v; | ||||
| 	var out = []; | ||||
| 	opts = opts || {}; | ||||
| 	if(!sheet["!ref"]) return out; | ||||
| 	if(!sheet || !sheet["!ref"]) return out; | ||||
| 	r = XLSX.utils.decode_range(sheet["!ref"]); | ||||
| 	for(R=r.s.r, C = r.s.c; C <= r.e.c; ++C) { | ||||
| 		val = sheet[encode_cell({c:C,r:R})]; | ||||
| 		if(val){ | ||||
| 			switch(val.t) { | ||||
| 				case 's': case 'str': hdr[C] = val.v; break; | ||||
| 				case 'n': hdr[C] = val.v; break; | ||||
| 			} | ||||
| 		if(!val) continue; | ||||
| 		switch(val.t) { | ||||
| 			case 's': case 'str': hdr[C] = val.v; break; | ||||
| 			case 'n': hdr[C] = val.v; break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| @ -33,7 +32,7 @@ function sheet_to_row_object_array(sheet, opts){ | ||||
| 		row = Object.create({ __rowNum__ : R }); | ||||
| 		for (C = r.s.c; C <= r.e.c; ++C) { | ||||
| 			val = sheet[encode_cell({c: C,r: R})]; | ||||
| 			if(!val) continue; | ||||
| 			if(!val || !val.t) continue; | ||||
| 			v = (val || {}).v; | ||||
| 			switch(val.t){ | ||||
| 				case 's': case 'str': case 'b': case 'n': | ||||
| @ -66,7 +65,7 @@ function sheet_to_csv(sheet, opts) { | ||||
| 	}; | ||||
| 	var out = "", txt = ""; | ||||
| 	opts = opts || {}; | ||||
| 	if(!sheet["!ref"]) return out; | ||||
| 	if(!sheet || !sheet["!ref"]) return out; | ||||
| 	var r = XLSX.utils.decode_range(sheet["!ref"]); | ||||
| 	for(var R = r.s.r; R <= r.e.r; ++R) { | ||||
| 		var row = []; | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"name": "xlsx", | ||||
| 	"version": "0.3.8", | ||||
| 	"version": "0.3.9", | ||||
| 	"author": "sheetjs", | ||||
| 	"description": "(one day) a full-featured XLSX parser and writer.  For now, primitive parser", | ||||
| 	"keywords": [ "xlsx", "office", "excel", "spreadsheet" ], | ||||
|  | ||||
							
								
								
									
										14
									
								
								test.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										14
									
								
								test.js
									
									
									
									
									
								
							| @ -29,6 +29,20 @@ function parsetest(x, wb) { | ||||
| 			}); | ||||
| 		}); | ||||
| 	}); | ||||
| 	describe(x + ' should generate JSON', function() { | ||||
| 		wb.SheetNames.forEach(function(ws, i) { | ||||
| 			it('#' + i + ' (' + ws + ')', function() { | ||||
| 				var json = XLSX.utils.sheet_to_row_object_array(wb.Sheets[ws]); | ||||
| 			}); | ||||
| 		}); | ||||
| 	}); | ||||
| 	describe(x + ' should generate formulae', function() { | ||||
| 		wb.SheetNames.forEach(function(ws, i) { | ||||
| 			it('#' + i + ' (' + ws + ')', function() { | ||||
| 				var json = XLSX.utils.get_formulae(wb.Sheets[ws]); | ||||
| 			}); | ||||
| 		}); | ||||
| 	}); | ||||
| 	describe(x + ' should generate correct output', function() { | ||||
| 		wb.SheetNames.forEach(function(ws, i) { | ||||
| 			var name = ('./test_files/' + x + '.' + i + '.csv'); | ||||
|  | ||||
							
								
								
									
										61
									
								
								xlsx.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										61
									
								
								xlsx.js
									
									
									
									
									
								
							| @ -104,13 +104,13 @@ var general_fmt = function(v) { | ||||
| 		else if(V >= 0.0001 && V < 0.001) o = v.toPrecision(6); | ||||
| 		else if(V >= Math.pow(10,10) && V < Math.pow(10,11)) o = v.toFixed(10).substr(0,12); | ||||
| 		else if(V > Math.pow(10,-9) && V < Math.pow(10,11)) { | ||||
| 			o = v.toFixed(12).replace(/(\.[0-9]*[1-9])0*$/,"$1").replace(/\.$/,"");  | ||||
| 			o = v.toFixed(12).replace(/(\.[0-9]*[1-9])0*$/,"$1").replace(/\.$/,""); | ||||
| 			if(o.length > 11+(v<0?1:0)) o = v.toPrecision(10); | ||||
| 			if(o.length > 11+(v<0?1:0)) o = v.toExponential(5); | ||||
| 		}  | ||||
| 		} | ||||
| 		else { | ||||
| 			o = v.toFixed(11).replace(/(\.[0-9]*[1-9])0*$/,"$1"); | ||||
| 				if(o.length > 11 + (v<0?1:0)) o = v.toPrecision(6);  | ||||
| 				if(o.length > 11 + (v<0?1:0)) o = v.toPrecision(6); | ||||
| 		} | ||||
| 		o = o.replace(/(\.[0-9]*[1-9])0+e/,"$1e").replace(/\.0*e/,"e"); | ||||
| 		return o.replace("e","E").replace(/\.0*$/,"").replace(/\.([0-9]*[^0])0*$/,".$1").replace(/(E[+-])([0-9])$/,"$1"+"0"+"$2"); | ||||
| @ -419,7 +419,7 @@ SSF.load_table = function(tbl) { for(var i=0; i!=0x0188; ++i) if(tbl[i]) SSF.loa | ||||
| make_ssf(SSF); | ||||
| var XLSX = {}; | ||||
| (function(XLSX){ | ||||
| XLSX.version = '0.3.8'; | ||||
| XLSX.version = '0.3.9'; | ||||
| function parsexmltag(tag) { | ||||
| 	var words = tag.split(/\s+/); | ||||
| 	var z = {'0': words[0]}; | ||||
| @ -788,17 +788,17 @@ function parseSheet(data) { | ||||
| 			} | ||||
| 
 | ||||
| 			/* formatting */ | ||||
| 			if(cell.s && styles.CellXf) { /* TODO: second check is a hacked guard */ | ||||
| 			var fmtid = 0; | ||||
| 			if(cell.s && styles.CellXf) { | ||||
| 				var cf = styles.CellXf[cell.s]; | ||||
| 				if(cf && cf.numFmtId && cf.numFmtId !== 0) { | ||||
| 				if(cf && cf.numFmtId) fmtid = cf.numFmtId; | ||||
| 			} | ||||
| 					p.raw = p.v; | ||||
| 					p.rawt = p.t; | ||||
| 					try { | ||||
| 						p.v = SSF.format(cf.numFmtId,p.v,_ssfopts); | ||||
| 				p.v = SSF.format(fmtid,p.v,_ssfopts); | ||||
| 						p.t = 'str'; | ||||
| 					} catch(e) { p.v = p.raw; } | ||||
| 				} | ||||
| 			} | ||||
| 			} catch(e) { p.v = p.raw; p.t = p.rawt; } | ||||
| 
 | ||||
| 			s[cell.r] = p; | ||||
| 		}); | ||||
| @ -1082,19 +1082,19 @@ function parseRels(data, currentFilePath) { | ||||
| 	var rels = {}; | ||||
| 
 | ||||
| 	var resolveRelativePathIntoAbsolute = function (to) { | ||||
| 	    var toksFrom = currentFilePath.split('/'); | ||||
| 	 	toksFrom.pop(); // folder path
 | ||||
| 	    var toksTo = to.split('/'); | ||||
| 	    var reversed = []; | ||||
| 	    while (toksTo.length !== 0) { | ||||
| 	        var tokTo = toksTo.shift(); | ||||
| 	        if (tokTo === '..') { | ||||
| 	            toksFrom.pop(); | ||||
| 	        } else if (tokTo !== '.') { | ||||
| 	            toksFrom.push(tokTo); | ||||
| 	        } | ||||
| 	    } | ||||
| 	    return toksFrom.join('/'); | ||||
| 		var toksFrom = currentFilePath.split('/'); | ||||
| 		toksFrom.pop(); // folder path
 | ||||
| 		var toksTo = to.split('/'); | ||||
| 		var reversed = []; | ||||
| 		while (toksTo.length !== 0) { | ||||
| 			var tokTo = toksTo.shift(); | ||||
| 			if (tokTo === '..') { | ||||
| 				toksFrom.pop(); | ||||
| 			} else if (tokTo !== '.') { | ||||
| 				toksFrom.push(tokTo); | ||||
| 			} | ||||
| 		} | ||||
| 		return toksFrom.join('/'); | ||||
| 	} | ||||
| 
 | ||||
| 	data.match(/<[^>]*>/g).forEach(function(x) { | ||||
| @ -1304,15 +1304,14 @@ function sheet_to_row_object_array(sheet, opts){ | ||||
| 	var val, row, r, hdr = {}, isempty, R, C, v; | ||||
| 	var out = []; | ||||
| 	opts = opts || {}; | ||||
| 	if(!sheet["!ref"]) return out; | ||||
| 	if(!sheet || !sheet["!ref"]) return out; | ||||
| 	r = XLSX.utils.decode_range(sheet["!ref"]); | ||||
| 	for(R=r.s.r, C = r.s.c; C <= r.e.c; ++C) { | ||||
| 		val = sheet[encode_cell({c:C,r:R})]; | ||||
| 		if(val){ | ||||
| 			switch(val.t) { | ||||
| 				case 's': case 'str': hdr[C] = val.v; break; | ||||
| 				case 'n': hdr[C] = val.v; break; | ||||
| 			} | ||||
| 		if(!val) continue; | ||||
| 		switch(val.t) { | ||||
| 			case 's': case 'str': hdr[C] = val.v; break; | ||||
| 			case 'n': hdr[C] = val.v; break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| @ -1322,7 +1321,7 @@ function sheet_to_row_object_array(sheet, opts){ | ||||
| 		row = Object.create({ __rowNum__ : R }); | ||||
| 		for (C = r.s.c; C <= r.e.c; ++C) { | ||||
| 			val = sheet[encode_cell({c: C,r: R})]; | ||||
| 			if(!val) continue; | ||||
| 			if(!val || !val.t) continue; | ||||
| 			v = (val || {}).v; | ||||
| 			switch(val.t){ | ||||
| 				case 's': case 'str': case 'b': case 'n': | ||||
| @ -1355,7 +1354,7 @@ function sheet_to_csv(sheet, opts) { | ||||
| 	}; | ||||
| 	var out = "", txt = ""; | ||||
| 	opts = opts || {}; | ||||
| 	if(!sheet["!ref"]) return out; | ||||
| 	if(!sheet || !sheet["!ref"]) return out; | ||||
| 	var r = XLSX.utils.decode_range(sheet["!ref"]); | ||||
| 	for(var R = r.s.r; R <= r.e.r; ++R) { | ||||
| 		var row = []; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user