spreadjs的用法

var spreadNS = GC.Spread.Sheets;	var spread = new spreadNS.Workbook($("#spreadjsExc")[0], {sheetCount:0});	var excelIO = new GC.Spread.Excel.IO();	var fbx = new spreadNS.FormulaTextBox.FormulaTextBox(document.getElementById('formulabox'));	fbx.workbook(spread);	var _blob = parent.$("#fileImportIO").data("fileIO");	var readonly = parent.$("#fileImportIO").attr('readonly');		excelIO.open(_blob, function (spreadJson) {		function updateActiveCells() {			for (var i = 0; i < spread.getSheetCount(); i++) {				var sheet = spread.getSheet(i);				columnIndex = sheet.getActiveColumnIndex(),					rowIndex = sheet.getActiveRowIndex();				if (columnIndex !== undefined && rowIndex !== undefined) {					spread.getSheet(i).setActiveCell(rowIndex, columnIndex);				} else {					spread.getSheet(i).setActiveCell(0, 0);				}				if(readonly == "true"){					sheet.options.isProtected = true;//禁止编辑					sheet.options.colHeaderVisible = false;					sheet.options.rowHeaderVisible = false;//取消头跟左侧工具栏					spread.options.newTabVisible = false;//取消新建sheet按钮				}else{					sheet.options.isProtected = false;				}			}		}		if (spreadJson.version && spreadJson.sheets) {			spread.unbindAll();			spread.fromJSON(spreadJson);			//attachSpreadEvents(true);			updateActiveCells();			spread.focus();			fbx.workbook(spread);			onCellSelected();			//syncSpreadPropertyValues();			//syncSheetPropertyValues();		}			}, function (e) {		if (e.errorCode === 0 || e.errorCode === 1) {			//alert("error");		} 	});	if(readonly == "true"){		$("#saveFile").remove();		$("#close").remove();	}	//spread.print();打印	function onCellSelected() {		$("#addslicer").addClass("hidden");		var sheet = spread.getActiveSheet(),			row = sheet.getActiveRowIndex(),			column = sheet.getActiveColumnIndex();		if (showSparklineSetting(row, column)) {			setActiveTab("sparklineEx");			return;		}		var cellInfo = getCellInfo(sheet, row, column),			cellType = cellInfo.type;			syncCellRelatedItems();		updatePositionBox(sheet);		updateCellStyleState(sheet, row, column);			var tabType = "cell";			clearCachedItems();			// add map from cell type to tab type here		if (cellType === "table") {			tabType = "table";			syncTablePropertyValues(sheet, cellInfo.object);			$("#addslicer").removeClass("hidden");		} else if (cellType === "comment") {			tabType = "comment";			syncCommentPropertyValues(sheet, cellInfo.object);		}			setActiveTab(tabType);	}	$("#saveFile").click(function(e){		e.preventDefault();		var json = spread.toJSON({includeBindingSource: true});		json = JSON.stringify(json);		var xhr = new XMLHttpRequest();		var buttonid = parent.$("#fileImportIO").attr("buttonid");		var _beanid = parent.$("#fileImportIO").attr("_beanid");		var url = '/map/download!save?_beanid='+_beanid+'&buttonid='+buttonid;		xhr.open("POST", url , true);		xhr.onload = function (oEvent) {			if(this.status == 200){				if(this.response == "success"){					alert('保存成功');				}			}		};				xhr.send(json);		/*excelIO.save(json, function (blob) {					}, function (e) {			//alert(e);		});*/	});	$("#printFile").click(function(e){		e.preventDefault();		spread.print();	});	$("#exportFile").click(function(e){		e.preventDefault();		var json = spread.toJSON({includeBindingSource: true});		var _fname = parent.$("#fileImportIO").attr("filename");		excelIO.save(json, function (blob) {			saveAs(blob,_fname+".xlsx");		}, function (e) {			alert(e);		});	});	$("#close").click(function(e){		e.preventDefault();		var _beanid = parent.$("#fileImportIO").attr("_beanid");		var buttonid = parent.$("#fileImportIO").attr("buttonid");		var url = '/map/download!delete?_beanid='+_beanid+'&buttonid='+buttonid;		var _ajax = {			url : url,			success : function(data){				parent.$("#fileImportIO").closest("#wapper").find(".ui-dialog-titlebar").find(".ui-dialog-titlebar-close").click();			}		};		$.ajax(_ajax);	});	$("#closes").click(function(e){		parent.$("#fileImportIO").closest("#wapper").find(".ui-dialog-titlebar").find(".ui-dialog-titlebar-close").click();	});