forked from sheetjs/sheetjs
		
	- update FilterDatabase defined name when writing AutoFilter - XLML stub cells have blank Data block - HTML export honor `id` option - expose `sheet_get_cell`
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 18.14 Supplementary Workbook Data */
 | 
						|
function parse_xlink_xml(/*::data, rel, name:string, _opts*/) {
 | 
						|
	//var opts = _opts || {};
 | 
						|
	//if(opts.WTF) throw "XLSX External Link";
 | 
						|
}
 | 
						|
 | 
						|
/* [MS-XLSB] 2.1.7.25 External Link */
 | 
						|
function parse_xlink_bin(data, rel, name/*:string*/, _opts) {
 | 
						|
	if(!data) return data;
 | 
						|
	var opts = _opts || {};
 | 
						|
 | 
						|
	var pass = false, end = false;
 | 
						|
 | 
						|
	recordhopper(data, function xlink_parse(val, R_n, RT) {
 | 
						|
		if(end) return;
 | 
						|
		switch(RT) {
 | 
						|
			case 0x0167: /* 'BrtSupTabs' */
 | 
						|
			case 0x016B: /* 'BrtExternTableStart' */
 | 
						|
			case 0x016C: /* 'BrtExternTableEnd' */
 | 
						|
			case 0x016E: /* 'BrtExternRowHdr' */
 | 
						|
			case 0x016F: /* 'BrtExternCellBlank' */
 | 
						|
			case 0x0170: /* 'BrtExternCellReal' */
 | 
						|
			case 0x0171: /* 'BrtExternCellBool' */
 | 
						|
			case 0x0172: /* 'BrtExternCellError' */
 | 
						|
			case 0x0173: /* 'BrtExternCellString' */
 | 
						|
			case 0x01D8: /* 'BrtExternValueMeta' */
 | 
						|
			case 0x0241: /* 'BrtSupNameStart' */
 | 
						|
			case 0x0242: /* 'BrtSupNameValueStart' */
 | 
						|
			case 0x0243: /* 'BrtSupNameValueEnd' */
 | 
						|
			case 0x0244: /* 'BrtSupNameNum' */
 | 
						|
			case 0x0245: /* 'BrtSupNameErr' */
 | 
						|
			case 0x0246: /* 'BrtSupNameSt' */
 | 
						|
			case 0x0247: /* 'BrtSupNameNil' */
 | 
						|
			case 0x0248: /* 'BrtSupNameBool' */
 | 
						|
			case 0x0249: /* 'BrtSupNameFmla' */
 | 
						|
			case 0x024A: /* 'BrtSupNameBits' */
 | 
						|
			case 0x024B: /* 'BrtSupNameEnd' */
 | 
						|
				break;
 | 
						|
 | 
						|
			case 0x0023: /* 'BrtFRTBegin' */
 | 
						|
				pass = true; break;
 | 
						|
			case 0x0024: /* 'BrtFRTEnd' */
 | 
						|
				pass = false; break;
 | 
						|
 | 
						|
			default:
 | 
						|
				if((R_n||"").indexOf("Begin") > 0){/* empty */}
 | 
						|
				else if((R_n||"").indexOf("End") > 0){/* empty */}
 | 
						|
				else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT.toString(16) + " " + R_n);
 | 
						|
		}
 | 
						|
	}, opts);
 | 
						|
}
 |