forked from sheetjs/sheetjs
		
	- write !cols widths : XLSX XLSB XLML - write hyperlinks : XLML - XLSB convert date cell to numeric on write - fixed issue with assigning self in jszip issues: - closes #607 h/t @jscheid - closes #195 h/t @asfman
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var strs = {}; // shared strings
 | 
						|
var _ssfopts = {}; // spreadsheet formatting options
 | 
						|
 | 
						|
RELS.WS = [
 | 
						|
	"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",
 | 
						|
	"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"
 | 
						|
];
 | 
						|
 | 
						|
function get_sst_id(sst/*:SST*/, str/*:string*/)/*:number*/ {
 | 
						|
	for(var i = 0, len = sst.length; i < len; ++i) if(sst[i].t === str) { sst.Count ++; return i; }
 | 
						|
	sst[len] = {t:str}; sst.Count ++; sst.Unique ++; return len;
 | 
						|
}
 | 
						|
 | 
						|
function col_obj_w(C/*:number*/, col) {
 | 
						|
	var p = ({min:C+1,max:C+1}/*:any*/);
 | 
						|
	/* wch (chars), wpx (pixels) */
 | 
						|
	var width = -1;
 | 
						|
	if(col.MDW) MDW = col.MDW;
 | 
						|
	if(col.width != null) p.customWidth = 1;
 | 
						|
	else if(col.wpx != null) width = px2char(col.wpx);
 | 
						|
	else if(col.wch != null) width = col.wch;
 | 
						|
	if(width > -1) { p.width = char2width(width); p.customWidth = 1; }
 | 
						|
	return p;
 | 
						|
}
 | 
						|
 | 
						|
function get_cell_style(styles, cell, opts) {
 | 
						|
	var z = opts.revssf[cell.z != null ? cell.z : "General"];
 | 
						|
	for(var i = 0, len = styles.length; i != len; ++i) if(styles[i].numFmtId === z) return i;
 | 
						|
	styles[len] = {
 | 
						|
		numFmtId:z,
 | 
						|
		fontId:0,
 | 
						|
		fillId:0,
 | 
						|
		borderId:0,
 | 
						|
		xfId:0,
 | 
						|
		applyNumberFormat:1
 | 
						|
	};
 | 
						|
	return len;
 | 
						|
}
 | 
						|
 | 
						|
function safe_format(p, fmtid, fillid, opts, themes, styles) {
 | 
						|
	if(p.t === 'z') return;
 | 
						|
	if(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);
 | 
						|
	try {
 | 
						|
		if(p.t === 'e') p.w = p.w || BErr[p.v];
 | 
						|
		else if(fmtid === 0) {
 | 
						|
			if(p.t === 'n') {
 | 
						|
				if((p.v|0) === p.v) p.w = SSF._general_int(p.v,_ssfopts);
 | 
						|
				else p.w = SSF._general_num(p.v,_ssfopts);
 | 
						|
			}
 | 
						|
			else if(p.t === 'd') {
 | 
						|
				var dd = datenum(p.v);
 | 
						|
				if((dd|0) === dd) p.w = SSF._general_int(dd,_ssfopts);
 | 
						|
				else p.w = SSF._general_num(dd,_ssfopts);
 | 
						|
			}
 | 
						|
			else if(p.v === undefined) return "";
 | 
						|
			else p.w = SSF._general(p.v,_ssfopts);
 | 
						|
		}
 | 
						|
		else if(p.t === 'd') p.w = SSF.format(fmtid,datenum(p.v),_ssfopts);
 | 
						|
		else p.w = SSF.format(fmtid,p.v,_ssfopts);
 | 
						|
		if(opts.cellNF) p.z = SSF._table[fmtid];
 | 
						|
	} catch(e) { if(opts.WTF) throw e; }
 | 
						|
	if(fillid) try {
 | 
						|
		p.s = styles.Fills[fillid];
 | 
						|
		if (p.s.fgColor && p.s.fgColor.theme) {
 | 
						|
			p.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);
 | 
						|
			if(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;
 | 
						|
		}
 | 
						|
		if (p.s.bgColor && p.s.bgColor.theme) {
 | 
						|
			p.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);
 | 
						|
			if(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;
 | 
						|
		}
 | 
						|
	} catch(e) { if(opts.WTF) throw e; }
 | 
						|
}
 |