| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | import React ,{Component} from 'react';import {Button} from 'antd';class ExportExec extends React.Component {    constructor(props) {        super(props);        this.state = {  }    }    //判断浏览器类型	getExplorer() {		var explorer = window.navigator.userAgent;		//ie 		if(explorer.indexOf("MSIE") >= 0) {			return 'ie';		}		//firefox 		else if(explorer.indexOf("Firefox") >= 0) {			return 'Firefox';		}		//Chrome		else if(explorer.indexOf("Chrome") >= 0) {			return 'Chrome';		}		//Opera		else if(explorer.indexOf("Opera") >= 0) {			return 'Opera';		}		//Safari		else if(explorer.indexOf("Safari") >= 0) {			return 'Safari';		}	}    //导出为exel表格	tabExel() {        this.props.callback(true);    }    tabaleClick(tabel){        var table = tabel;        var idTmr;		//debugger;		//整个表格拷贝到EXCEL中		if(this.getExplorer() == 'ie') {			var curTbl = document.getElementById(tableid);			var oXL = new ActiveXObject("Excel.Application");			//创建AX对象excel 			var oWB = oXL.Workbooks.Add();			//获取workbook对象 			var xlsheet = oWB.Worksheets(1);			//激活当前sheet 			var sel = document.body.createTextRange();			sel.moveToElementText(curTbl);			//把表格中的内容移到TextRange中 			sel.select();			//全选TextRange中内容 			sel.execCommand("Copy");			//复制TextRange中内容  			xlsheet.Paste();			//粘贴到活动的EXCEL中       			oXL.Visible = true;			//设置excel可见属性			try {				var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");			} catch(e) {				print("Nested catch caught " + e);			} finally {				oWB.SaveAs(fname);				oWB.Close(savechanges = false);				//xls.visible = false;				oXL.Quit();				oXL = null;				//结束excel进程,退出完成				//window.setInterval("Cleanup();",1);				idTmr = window.setInterval("Cleanup();", 1);			}		} else {			this.tableToExcel(table,this.getExplorer());		}		function Cleanup() {			window.clearInterval(idTmr);			CollectGarbage();		}		this.props.callback(false);    }	tableToExcel(table,name) {		var uri = 'data:application/vnd.ms-excel;base64,',			template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',			base64 = function(s) {				return window.btoa(unescape(encodeURIComponent(s)))			},			format = function(s, c) {				return s.replace(/{(\w+)}/g,					function(m, p) {						return c[p];					})			}			if(!table.nodeType) table = document.getElementById(table);			var ctx = {				worksheet: name || 'Worksheet',				table: table.innerHTML			};			window.location.href = uri + base64(format(template, ctx))    }    componentWillReceiveProps(nextProps){        if(nextProps.data){            this.tabaleClick(nextProps.data)        }    }    render() {         return (                 <Button onClick={this.tabExel.bind(this)}>导出到表格</Button>            );    }} export default ExportExec;
 |