实现效果:从有两个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();
}
//设置值,若为空,则用 代替
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)?" ":_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>
分享到:
相关推荐
SheetJS提供了丰富的API,可以方便地读取Excel数据并转换为JavaScript数组,这些数组可以直接用于填充HTML表格。 以下是一个基本的步骤概览: 1. **文件上传**:用户在前端选择Excel文件后,使用`FileReader API`...
在JavaScript中导入Excel文件,尤其是在兼容古老的Internet Explorer 11(IE11)浏览器时,需要考虑到这个浏览器并不支持现代的File API和其他先进的Web技术。本文将深入探讨如何实现这一功能,以及涉及到的关键知识...
"JS导出页面数据到excel"这个工具类程序正是为了解决这个问题。它实现了在不依赖后端服务器代码的情况下,通过纯前端JavaScript技术将页面数据转化为可下载的Excel文件。 1. **使用场景**: - 数据展示:当网页...
总的来说,JavaScript批量复制Excel数据到HTML是一种常见的数据交互方式,它利用SheetJS等库的强大功能,提高了网页与Excel数据之间的互操作性,使得数据可视化和用户交互变得更加便捷。开发者在实际应用中,需要...
本主题聚焦于使用JavaScript插件将Excel文件的内容读取并显示在HTML页面上,甚至实现将这些数据上传到数据库的功能。我们关注的插件是`js-xlsx`,这是一个广受欢迎的开源库,用于处理XLSX和XLSM格式的电子表格文件。...
在JavaScript中,读取Excel文件(.xls)并兼容多种浏览器,如Chrome、IE和Firefox,是一项常见的需求。这通常涉及到文件API、ActiveXObject(针对IE)和第三方库的使用。下面将详细介绍如何实现这一功能。 首先,...
通过JavaScript(JS)来读取并解析这些Excel文件可以实现对数据的快速处理与展示。本文将详细介绍如何利用JavaScript读取本地Excel文档数据。 #### 二、技术原理与实现方法 ##### 2.1 使用ActiveXObject读取Excel...
### 如何将JavaScript获取的数据导出到Excel表中 在实际工作中,经常需要将系统中的数据导出到Excel表格中以便于进一步分析或共享。本文将详细介绍如何利用JavaScript结合Java后端来实现这一功能。 #### 导出Excel...
本文将深入探讨如何利用JS来读取和解析Excel文件,以及如何进行数据验证,确保上传的数据符合预设的格式要求。 #### 二、关键概念 - **JS**:即JavaScript,一种广泛使用的脚本语言,常用于网页动态功能的实现。 -...
在JavaScript的帮助下,这些表格数据可以被提取并转化为适合Excel的格式。 `Common.js`可能包含了主要的逻辑代码。在这个文件中,开发者可能会使用JavaScript的DOM操作来遍历表格,获取每个单元格的数据。然后,...
在HTML页面中,通过JavaScript进行API调用,可以实现Excel数据的在线编辑。 2. **API集成**:在HTML页面中集成Google Sheets API,需要引入相应的JavaScript库,并设置适当的配置。这包括设置API密钥,指定要操作的...
在JavaScript中将表格数据导出到Excel是一种常见的需求,尤其在Web应用中,用户往往希望可以方便地将数据显示在Excel表格中以便进一步处理或存储。本文将深入探讨三种不同的JavaScript方法来实现这一功能,并着重...
这需要在生成Excel数据时,根据业务逻辑添加相应的合并信息。 2. **自动调整列宽**:Excel允许设定列宽,以适应不同长度的数据。在JavaScript中,我们可以计算每个列的最大字符数,然后根据这个值设置列宽。例如,`...
- 在请求成功后,调用另外一个函数ReadXml来处理XML数据并显示在HTML页面上。 - 在ReadXml函数中,首先获取XML文档对象,然后定义表格的头部,接着通过getElementsByTagName获取所有stuinfo节点。 - 最后,通过遍历...
在网页开发中,有时我们...提供的`js浏览器导出Excel`资源应该包含了一个示例,你可以参考这个示例代码来理解并应用到自己的项目中。这种方法简单易用,适用于各种网页表格导出需求,极大地提高了前端开发的灵活性。
通过上述优化,Table2Excel.js在IE浏览器中应该能正确识别并导出指定的表格,避免了"table[0]"的问题。 除了上述问题,还有其他需要注意的点。例如,IE浏览器对CSS样式的支持有限,因此在导出Excel时,表格的样式...
在网页上打印Excel报表是Web应用中常见的需求,特别是在数据展示和分析的场景下。本文将详细介绍如何在WEB页面上实现Excel报表的打印,通过一个简单的示例来帮助开发者理解和应用这一技术。 首先,我们需要理解Web...
在标题"vb调用IE内容.rar_Excel VBA_vb 控制IE_vba 操作ie_vba调用ie_vb调用ie内容"中,主要涉及的是如何利用VBA来控制和操作Internet Explorer(IE)浏览器,以获取和处理网页上的数据。这个压缩包文件很可能是包含...
在纯前端环境中,读取和解析Excel文件通常需要借助特定的JavaScript库,因为浏览器本身并不支持直接处理Excel格式的数据。以下两种方法详细介绍了如何在HTML页面中实现这一功能。 **方式一:使用ActiveX对象(不...