JS IE浏览器Excel导入与导出

IE浏览器:Excel导入示例

很多插件兼容IE导出,但不兼容IE导入。故此提供如下IE导入示例。

//使用Layui上传组件进行导入
layui.upload.render({
	elem: "#importXls2",
	url: "",
	auto: false,
	accept: "file",
	acceptMime: "application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
	exts: "xls|xlsx",
	choose: function(chooseObj){
		//当IE浏览器时
		if(!!window.ActiveXObject || "ActiveXObject" in window){
			//Excel导入
			//通过隐藏的Input file获取选择的文件完整路径
			var FileWindowDiv=$("<div id='FileWindowDiv' class='FileWindow' style='display:none'></div>");
			$("body").append(FileWindowDiv);
			var FileWindow=$("<input id='FileWindow' type='file'/>");
			$("#FileWindowDiv").append(FileWindow);	                
			$("#FileWindow").on('change', function (e) {
				//得到所选文件完整路径
				var FilePath=$('#FileWindow').val();
				FilePath=FilePath.replace("fakepath\\","")
				console.log(FilePath);
				//实例化Excel App
				var xlsApp=new ActiveXObject("Excel.Application");
				//通过Workbooks打开Excel
				var xlsBook=xlsApp.Workbooks.open(FilePath);
				//得到Sheet表
				xlsBook.Worksheets(1).select();                    
				var xlsSheet=xlsBook.ActiveSheet;
				var rows=xlsSheet.usedrange.rows.count;	//行数
				var cols=xlsSheet.usedRange.columns.count;	//列数
				//数据放入JSON对象数组。注意xlsSheet索引从1开始
				var dataArr=[];
				for (var i=2;i<=rows;i++){
					var jsonObj={}
					for (var j=1;j<=cols;j++){
						switch (j){
							case 1:	//第1列赋值
								jsonObj.REA_RowId=xlsSheet.Cells(i,j).text;
								break;
							case 2:	//第2列赋值
								jsonObj.REA_Desc=xlsSheet.Cells(i,j).text;
								break;
						}
					}
					dataArr.push(jsonObj);
				}
				//得到所有待导入的数据,可在此调用后台方法批量插入数据
				console.log(JSON.stringify(dataArr));
			});
			$(".FileWindow input").click();
			
			return;
		}
	}
});

IE浏览器:Excel导出示例

$("#ExportXls").click(function(){
	//当IE浏览器时
	if(!!window.ActiveXObject || "ActiveXObject" in window){
		var dgRows=$("#PatList").datagrid('getRows');
		if (dgRows<1){
			layer.msg("无可导出的数据!",{icon:2,anim:6});
			return;
		}				
		
		$.messager.progress({
			title: "提示",
			msg: "正在导出数据",
			text: "导出中....",
			iconCls:"icon-export"
		});
		
		$.cm({
			ClassName:"wcw.cls.Query",
			QueryName:"getPatInfo",
		},function(data){
			var myRows=data.rows;	//数据
			var myLength=myRows.length;
			if (myLength>0){
				$.messager.progress("close");
				
				//实例化Excel App对象
				var xlsApp=new ActiveXObject("Excel.Application"); 
				xlsApp.visible=true;	//设置excel为可见
				//添加Workbooks
				var xlsBook=xlsApp.Workbooks.Add;
				//得到Worksheets
				var xlsSheet=xlsBook.Worksheets(1);
				//定义表头
				var codeArray=["PatName","AdmReason","RegNo","EpisodeID","PersonNo"];
				var deseArray=["姓名","费别","登记号","就诊ID","身份证号"];
				var columnWidth=[9,15,12,11,20];
				//设置表头及其宽度
				for (j=0;j<deseArray.length;j++){
					xlsSheet.Columns(j+1).ColumnWidth=columnWidth[j];
					xlsSheet.Cells(1,j+1)=deseArray[j];
				}
				//设置单元格数据
				for (i=0;i<myLength;i++){
					for (j=0;j<codeArray.length;j++){
						var myCode=codeArray[j];
						xlsSheet.Cells(i+2,j+1)=myRows[i][myCode];
					}
				}
				
				xlsApp.ActiveWindow.Zoom=100;	//预览缩放比例
				xlsApp.UserControl=true;	//很重要,不能省略,不然可能会出问题,意思是excel交由用户控制
				//关闭
				xlsApp=null;
				xlsBook=null;
				xlsSheet=null;
			}
		});	
	}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值