forked from sheetjs/sheetjs
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 18.8.31 numFmts CT_NumFmts */
 | |
| function parseNumFmts(t, opts) {
 | |
| 	styles.NumberFmt = [];
 | |
| 	for(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y];
 | |
| 	t[0].match(/<[^>]*>/g).forEach(function(x) {
 | |
| 		var y = parsexmltag(x);
 | |
| 		switch(y[0]) {
 | |
| 			case '<numFmts': case '</numFmts>': case '<numFmts/>': break;
 | |
| 			case '<numFmt': {
 | |
| 				var f=unescapexml(y.formatCode), i=parseInt(y.numFmtId,10);
 | |
| 				styles.NumberFmt[i] = f; if(i>0) SSF.load(f,i);
 | |
| 			} break;
 | |
| 			default: if(opts.WTF) throw 'unrecognized ' + y[0] + ' in numFmts';
 | |
| 		}
 | |
| 	});
 | |
| }
 | |
| 
 | |
| /* 18.8.10 cellXfs CT_CellXfs */
 | |
| function parseCXfs(t, opts) {
 | |
| 	styles.CellXf = [];
 | |
| 	t[0].match(/<[^>]*>/g).forEach(function(x) {
 | |
| 		var y = parsexmltag(x);
 | |
| 		switch(y[0]) {
 | |
| 			case '<cellXfs': case '<cellXfs/>': case '</cellXfs>': break;
 | |
| 
 | |
| 			/* 18.8.45 xf CT_Xf */
 | |
| 			case '<xf': delete y[0];
 | |
| 				if(y.numFmtId) y.numFmtId = parseInt(y.numFmtId, 10);
 | |
| 				styles.CellXf.push(y); break;
 | |
| 			case '</xf>': break;
 | |
| 
 | |
| 			/* 18.8.1 alignment CT_CellAlignment */
 | |
| 			case '<alignment': case '<alignment/>': break;
 | |
| 
 | |
| 			/* 18.8.33 protection CT_CellProtection */
 | |
| 			case '<protection': case '</protection>': case '<protection/>': break;
 | |
| 
 | |
| 			case '<extLst': case '</extLst>': break;
 | |
| 			case '<ext': break;
 | |
| 			default: if(opts.WTF) throw 'unrecognized ' + y[0] + ' in cellXfs';
 | |
| 		}
 | |
| 	});
 | |
| }
 | |
| 
 | |
| /* 18.8 Styles CT_Stylesheet*/
 | |
| function parse_sty_xml(data, opts) {
 | |
| 	/* 18.8.39 styleSheet CT_Stylesheet */
 | |
| 	var t;
 | |
| 
 | |
| 	/* numFmts CT_NumFmts ? */
 | |
| 	if((t=data.match(/<numFmts([^>]*)>.*<\/numFmts>/))) parseNumFmts(t, opts);
 | |
| 
 | |
| 	/* fonts CT_Fonts ? */
 | |
| 	/* fills CT_Fills ? */
 | |
| 	/* borders CT_Borders ? */
 | |
| 	/* cellStyleXfs CT_CellStyleXfs ? */
 | |
| 
 | |
| 	/* cellXfs CT_CellXfs ? */
 | |
| 	if((t=data.match(/<cellXfs([^>]*)>.*<\/cellXfs>/))) parseCXfs(t, opts);
 | |
| 
 | |
| 	/* dxfs CT_Dxfs ? */
 | |
| 	/* tableStyles CT_TableStyles ? */
 | |
| 	/* colors CT_Colors ? */
 | |
| 	/* extLst CT_ExtensionList ? */
 | |
| 
 | |
| 	return styles;
 | |
| }
 |