`

JS获取Excel数据并显示到页面(IE)

    博客分类:
  • JS
阅读更多

实现效果:从有两个sheet的Excel中获取数据展示到页面中

测试环境:IE8、Excel2003、Excel2007

参考链接:http://blog.csdn.net/tongle_deng/article/details/7713572

说明:

1、不兼容火狐,用的ActiveXObject,ActiveX是IE的,火狐没有,所以不支持。网上有个例子在火狐里面也弄了个类似于ActiveX一样的插件,博主说测试通过可以用,下面的评论说安装了不能用,具体怎么样也不知道。插件博主上传到CSDN了,10个积分,俺没有啊,谁要是下载了给我留个吧!谢谢!

文章链接:http://mozilla.com.cn/post/35931/

插件链接:http://download.csdn.net/detail/xhanhan/4544576

2、因为使用的是IE的ActiveXObject,所以浏览器必须允许ActiveX控件的运行,如果不允许就不能初始化ActiveXObject。

具体设置:IE--->Internet选项--->“安全”选项卡--选中Internet--自定义级别,在打开的“安全设置”里面找到“ActiveX控件和插件”,

"ActiveX控件自动提示"--->"启用"

“对标记为可安全执行脚本的ActiveX控件执行脚本”---“启用”

“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”----->“提示”

“仅允许经过批准的域在未经提示的情况下使用ActiveX”-----“启用”

“下载未签名的ActiveX控件”----"提示"

“运行ActiveX控件和插件”----"启用"

 

如果还不行,就把“本地Intranet”也设置成这样,在“可新站点”里面添加上自己的站点。

还不行,重启浏览器

最后,调低浏览器的安全级别。这儿也有一个问题,我用的是IE8,调低安全级别之后,它又会自动调回来。网上说修改注册表有用,我试过了还是会自动改回来,谁要是知道怎么弄,给我留个言啊,万分感激。

 

言归正传,具体代码:

 

HTML:

<html>
<head>
 <title>JS读取Excel中的数据</title>
 </head>
<body>
 <div class="file-box">
<input type='text' name='textfield' id='textfield' class='systext' /> <!--文本框--> 
<input type='button' class='but uploadbtn' value='浏览...' /><!--浏览按钮-->
<input type="file" class="file" size="28" onchange="ReadExcel();" id="upfile"/> <!--真正的浏览按钮,用来打开上传页面,前面的“浏览”按钮掩盖此按钮,为好看-->
 </div>
<br >
<!--效果展示区域-->
<div id="show"></div>
</body>
</html>

 

Style:

<style type="text/css">  
body{ background:none;}
.p_show{ border-collapse:collapse; }
.p_show td{ border:1px solid #ccc; text-align:center; padding-left:10px; padding-right:10px; white-space:nowrap;height:26px; line-height:26px; }
.p_show th{background-color:#e1e1e1; border:1px solid #ccc; text-align:center; padding-left:10px; padding-right:10px; white-space:nowrap;height:26px; line-height:26px; }
.systext{width:238px; height:28px; line-height:28px; float:left; border:1px solid #ccc; }
.file-box{ position:relative;width:640px}
.uploadbtn{ height:30px;  width:60px; margin-left:3px; float:left;  }
.but { width:102px; height:25px; line-height:24px; margin-bottom: 3px; border:0px; background:#1381c9;  color: #fff; cursor:pointer; }
.file{ position:absolute; top:0px; left:0px; height:28px; filter:alpha(opacity:0);opacity: 0;width:310px; line-height:28px; }
</style> 
 JS:
<script type="text/javascript">
  function ReadExcel() {
	   var tempStr = "";
	   //IE8出于安全性的考虑,上传文件时屏蔽了真实的本地文件路径,而以“C:\fakepath\”取代之。
	   //用下面的方法获取文件的路径(只对IE有效)
	   var file_upl = document.getElementById("upfile");
	   file_upl.select();
	   var filePath = document.selection.createRange().text;
	   document.getElementById("textfield").value=filePath;//文本框显示文件路径

	   if(isempty(filePath)){return ;}//若为空,不处理
	   try {  
      	       var oXL = new ActiveXObject("Excel.Application"); //创建操作EXCEL应用程序的实例  
     	   }catch(e) {  
      		alert( "要将该表导出到Excel,您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件。");  
      	        return "";  
     	   }  
	   
	   var oWB = oXL.Workbooks.open(filePath);//打开指定路径的excel文件
	   var count = oWB.worksheets.Count;//sheet的张数
	   var str="";
	   for(var c=1;c<=count;c++){//循环每一张sheet
		   var name =oWB.worksheets(c).name;//每个sheet的名称
		   oWB.worksheets(c).select();//选定要操作的sheet
		   var oSheet = oWB.ActiveSheet;
		   var rows = oSheet.usedrange.rows.count; //行数
		   var columns =oSheet.usedrange.columns.count ;//列数
		   str+="<center><h3>"+name+"</h3></center>"
		   str+="<table  border='0' cellspacing='0' cellpadding='0' class='p_show' width='100%'>";
		   for(var i=1;i<=rows;i++){
		   	str +="<tr>";
		   		if(i==1){	//第一行是th,标题
					for(var j=1;j<=columns;j++){
					//Excel中每一个sheet默认有36列,但并不是每一列都有数据,获取第一行的数据,判断当没有数据时就不再循环并记录columns,下面的数据只需要循环columns列而不再是36列
						if(isempty(oSheet.cells(i,j).value)){
							columns=j-1;
							break;
						}else{
							str+="<th>"+oSheet.cells(i,j).value+"</th>";
						}
					}
		   		}else{
		   			for(var k=1;k<=columns;k++){
						str+="<td>"+setValue(oSheet.cells(i,k).value)+"</td>";
					}
		   		}
		   str +="</tr>"
		   }
		   str+="</table>";
		}
		document.getElementById("show").innerHTML=str;
		 //oWB.close();
		 //退出操作excel的实例对象
	        //oXL.quit();
		oXL.Visible = true; //设置excel为可见  
		//很重要,不能省略,不然会出问题 意思是excel交由用户控制       
		oXL.UserControl = true;    
		oSheet = null;  
		oWB = null;  
		oXL = null;  
	   //手动调用垃圾收集器
	   CollectGarbage();
  }

//设置值,若为空,则用&nbsp;代替
function setValue(_value){
        //处理日期格式的数据:从Excel中获取的日期数据用JS读取出来之后会变成字符串,也就是这种类型:Tue Jul 16 01:07:00 CST 2013,转换成这种类型:yyyy-mm-ddd
	if((_value+" ").indexOf("UTC")!=-1){
		var vDate = new Date(_value);
		_value=(vDate.getFullYear())+"-"+(vDate.getMonth()+1)+"-"+(vDate.getDate());//getDay()获取当前星期X(0-6,0代表星期天)
		return _value;
	}else{
		return isempty(_value)?"&nbsp;":_value;
	}
  }
  /**
*验证js变量的值是否为空,
* true-不存在
* false-存在
* 
*/
function isempty(v){ 
	switch (typeof v){ 
		case 'undefined' : return true;
		case 'string' : if((v.replace(/(^\s*)|(\s*$)/, "")).length == 0) return true; break; 
		case 'boolean' : if(!v) return true; break; 
		case 'number' : if(0 === v) return true; break; 
		case 'object' : 
		if(null === v) return true; 
		if(undefined !== v.length && v.length==0) return true; 
		for(var k in v){return false;} return true; 
		break; 
	} 
return false; 
}
/*
var myDate = new Date();
myDate.getYear();        //获取当前年份(2位)
myDate.getFullYear();    //获取完整的年份(4位,1970-????)
myDate.getMonth();       //获取当前月份(0-11,0代表1月)
myDate.getDate();        //获取当前日(1-31)
myDate.getDay();         //获取当前星期X(0-6,0代表星期天)
myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours();       //获取当前小时数(0-23)
myDate.getMinutes();     //获取当前分钟数(0-59)
myDate.getSeconds();     //获取当前秒数(0-59)
myDate.getMilliseconds();    //获取当前毫秒数(0-999)
myDate.toLocaleDateString();     //获取当前日期
var mytime=myDate.toLocaleTimeString();     //获取当前时间
myDate.toLocaleString( );        //获取日期与时间
*/
</script>
分享到:
评论

相关推荐

    js excel 批量复制数据到 html

    SheetJS提供了丰富的API,可以方便地读取Excel数据并转换为JavaScript数组,这些数组可以直接用于填充HTML表格。 以下是一个基本的步骤概览: 1. **文件上传**:用户在前端选择Excel文件后,使用`FileReader API`...

    JavaScript 导入 excel 兼容IE11

    在JavaScript中导入Excel文件,尤其是在兼容古老的Internet Explorer 11(IE11)浏览器时,需要考虑到这个浏览器并不支持现代的File API和其他先进的Web技术。本文将深入探讨如何实现这一功能,以及涉及到的关键知识...

    JS导出页面数据到excel

    "JS导出页面数据到excel"这个工具类程序正是为了解决这个问题。它实现了在不依赖后端服务器代码的情况下,通过纯前端JavaScript技术将页面数据转化为可下载的Excel文件。 1. **使用场景**: - 数据展示:当网页...

    js excel 批量复制数据到 html(新)

    总的来说,JavaScript批量复制Excel数据到HTML是一种常见的数据交互方式,它利用SheetJS等库的强大功能,提高了网页与Excel数据之间的互操作性,使得数据可视化和用户交互变得更加便捷。开发者在实际应用中,需要...

    HTML读取Excel表内容的js插件

    本主题聚焦于使用JavaScript插件将Excel文件的内容读取并显示在HTML页面上,甚至实现将这些数据上传到数据库的功能。我们关注的插件是`js-xlsx`,这是一个广受欢迎的开源库,用于处理XLSX和XLSM格式的电子表格文件。...

    JS 读取Excel文件(xls) 兼容Chrome/IE/Firefox

    在JavaScript中,读取Excel文件(.xls)并兼容多种浏览器,如Chrome、IE和Firefox,是一项常见的需求。这通常涉及到文件API、ActiveXObject(针对IE)和第三方库的使用。下面将详细介绍如何实现这一功能。 首先,...

    js读取本地excel文档数据

    通过JavaScript(JS)来读取并解析这些Excel文件可以实现对数据的快速处理与展示。本文将详细介绍如何利用JavaScript读取本地Excel文档数据。 #### 二、技术原理与实现方法 ##### 2.1 使用ActiveXObject读取Excel...

    js列表数据导出到excel表中

    ### 如何将JavaScript获取的数据导出到Excel表中 在实际工作中,经常需要将系统中的数据导出到Excel表格中以便于进一步分析或共享。本文将详细介绍如何利用JavaScript结合Java后端来实现这一功能。 #### 导出Excel...

    JS读取解析Excel

    本文将深入探讨如何利用JS来读取和解析Excel文件,以及如何进行数据验证,确保上传的数据符合预设的格式要求。 #### 二、关键概念 - **JS**:即JavaScript,一种广泛使用的脚本语言,常用于网页动态功能的实现。 -...

    html-js数据导出excel表

    在JavaScript的帮助下,这些表格数据可以被提取并转化为适合Excel的格式。 `Common.js`可能包含了主要的逻辑代码。在这个文件中,开发者可能会使用JavaScript的DOM操作来遍历表格,获取每个单元格的数据。然后,...

    在html页面使用excel的在线编辑

    在HTML页面中,通过JavaScript进行API调用,可以实现Excel数据的在线编辑。 2. **API集成**:在HTML页面中集成Google Sheets API,需要引入相应的JavaScript库,并设置适当的配置。这包括设置API密钥,指定要操作的...

    javascript将表格导出到Excel

    在JavaScript中将表格数据导出到Excel是一种常见的需求,尤其在Web应用中,用户往往希望可以方便地将数据显示在Excel表格中以便进一步处理或存储。本文将深入探讨三种不同的JavaScript方法来实现这一功能,并着重...

    JS导出Excel

    这需要在生成Excel数据时,根据业务逻辑添加相应的合并信息。 2. **自动调整列宽**:Excel允许设定列宽,以适应不同长度的数据。在JavaScript中,我们可以计算每个列的最大字符数,然后根据这个值设置列宽。例如,`...

    JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)

    - 在请求成功后,调用另外一个函数ReadXml来处理XML数据并显示在HTML页面上。 - 在ReadXml函数中,首先获取XML文档对象,然后定义表格的头部,接着通过getElementsByTagName获取所有stuinfo节点。 - 最后,通过遍历...

    html页面表格导出excel(原生js浏览器全兼容)

    在网页开发中,有时我们...提供的`js浏览器导出Excel`资源应该包含了一个示例,你可以参考这个示例代码来理解并应用到自己的项目中。这种方法简单易用,适用于各种网页表格导出需求,极大地提高了前端开发的灵活性。

    table2Excel.rar

    通过上述优化,Table2Excel.js在IE浏览器中应该能正确识别并导出指定的表格,避免了"table[0]"的问题。 除了上述问题,还有其他需要注意的点。例如,IE浏览器对CSS样式的支持有限,因此在导出Excel时,表格的样式...

    WEB页面打印excel报表

    在网页上打印Excel报表是Web应用中常见的需求,特别是在数据展示和分析的场景下。本文将详细介绍如何在WEB页面上实现Excel报表的打印,通过一个简单的示例来帮助开发者理解和应用这一技术。 首先,我们需要理解Web...

    vb调用IE内容.rar_Excel VBA_vb 控制IE_vba 操作ie_vba调用ie_vb调用ie内容

    在标题"vb调用IE内容.rar_Excel VBA_vb 控制IE_vba 操作ie_vba调用ie_vb调用ie内容"中,主要涉及的是如何利用VBA来控制和操作Internet Explorer(IE)浏览器,以获取和处理网页上的数据。这个压缩包文件很可能是包含...

    纯前台读取并解析Excel详解

    在纯前端环境中,读取和解析Excel文件通常需要借助特定的JavaScript库,因为浏览器本身并不支持直接处理Excel格式的数据。以下两种方法详细介绍了如何在HTML页面中实现这一功能。 **方式一:使用ActiveX对象(不...

Global site tag (gtag.js) - Google Analytics