forked from sheetjs/sheetjs
		
	
							parent
							
								
									f010c3165e
								
							
						
					
					
						commit
						8f5151c2e0
					
				
							
								
								
									
										57
									
								
								xlsx.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										57
									
								
								xlsx.js
									
									
									
									
									
								
							@ -148,7 +148,10 @@ function parseProps(data) {
 | 
			
		||||
	
 | 
			
		||||
	strings.forEach(function(f){p[f] = (data.match(matchtag(f))||[])[1];});
 | 
			
		||||
	bools.forEach(function(f){p[f] = data.match(matchtag(f))[1] == "true";});
 | 
			
		||||
	xtra.forEach(function(f){q[f] = data.match(new RegExp("<" + f + "[^>]*>(.*)<\/" + f + ">"))[1];});
 | 
			
		||||
	xtra.forEach(function(f) {
 | 
			
		||||
		var cur = data.match(new RegExp("<" + f + "[^>]*>(.*)<\/" + f + ">"));
 | 
			
		||||
		if(cur && cur.length > 0) q[f] = cur[1];
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	p["Worksheets"] = parseInt(q["HeadingPairs"].match(new RegExp("<vt:i4>(.*)<\/vt:i4>"))[1], 10); 
 | 
			
		||||
	p["SheetNames"] = q["TitlesOfParts"].match(new RegExp("<vt:lpstr>([^<]*)<\/vt:lpstr>","g")).map(function(x){return x.match(new RegExp("<vt:lpstr>([^<]*)<\/vt:lpstr>"))[1];});
 | 
			
		||||
@ -304,6 +307,55 @@ function split_cell(cstr) { return cstr.replace(/(\$?[A-Z]*)(\$?[0-9]*)/,"$1,$2"
 | 
			
		||||
function decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }
 | 
			
		||||
function decode_range(range) { var x =range.split(":").map(decode_cell); return {s:x[0],e:x[x.length-1]}; }
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Convert a sheet into an array of objects where the column headers are keys.
 | 
			
		||||
 **/
 | 
			
		||||
function sheet_to_row_object_array(sheet){
 | 
			
		||||
	var val, rowObject, range, columnHeaders, emptyRow, C;
 | 
			
		||||
	var outSheet = [];
 | 
			
		||||
	if (sheet["!ref"]) {
 | 
			
		||||
		range = XLSX.utils.decode_range(sheet["!ref"]);
 | 
			
		||||
 | 
			
		||||
		columnHeaders = {};
 | 
			
		||||
		for (C = range.s.c; C <= range.e.c; ++C) {
 | 
			
		||||
			val = sheet[XLSX.utils.encode_cell({
 | 
			
		||||
				c: C,
 | 
			
		||||
				r: range.s.r
 | 
			
		||||
			})];
 | 
			
		||||
			if(val){
 | 
			
		||||
				if(val.t === "s"){
 | 
			
		||||
					columnHeaders[C] = val.v;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for (var R = range.s.r + 1; R <= range.e.r; ++R) {
 | 
			
		||||
			emptyRow = true;
 | 
			
		||||
			//Row number is recorded in the prototype
 | 
			
		||||
			//so that it doesn't appear when stringified.
 | 
			
		||||
			rowObject = Object.create({ __rowNum__ : R });
 | 
			
		||||
			for (C = range.s.c; C <= range.e.c; ++C) {
 | 
			
		||||
				val = sheet[XLSX.utils.encode_cell({
 | 
			
		||||
					c: C,
 | 
			
		||||
					r: R
 | 
			
		||||
				})];
 | 
			
		||||
				if(val){
 | 
			
		||||
					if(val.t === "s"){
 | 
			
		||||
						rowObject[columnHeaders[C]] = val.v;
 | 
			
		||||
					} else {
 | 
			
		||||
						throw 'unrecognized type ' + val.t;
 | 
			
		||||
					}
 | 
			
		||||
					emptyRow = false;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if(!emptyRow) {
 | 
			
		||||
				outSheet.push(rowObject);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return outSheet;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var utils = {
 | 
			
		||||
	encode_col: encode_col,
 | 
			
		||||
	encode_row: encode_row,
 | 
			
		||||
@ -312,7 +364,8 @@ var utils = {
 | 
			
		||||
	decode_row: decode_row,
 | 
			
		||||
	split_cell: split_cell,
 | 
			
		||||
	decode_cell: decode_cell,
 | 
			
		||||
	decode_range: decode_range
 | 
			
		||||
	decode_range: decode_range,
 | 
			
		||||
	sheet_to_row_object_array: sheet_to_row_object_array
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
if(typeof require !== 'undefined' && typeof exports !== 'undefined') {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user