本文提供使用JavaScript通过ActiveX控件读取本地Excel文件的完整代码示例。重点说明该方法依赖客户端安装Microsoft Office,需配置Internet选项中的可信站点及ActiveX执行权限,并包含处理日期格式等具体逻辑。仅适用于旧版IE环境,现代开发建议采用File API。
JavaScript读取本地Excel文件的ActiveX实现与配置指南
以下是利用JavaScript读取本地Excel文件内容的具体代码实现。
具体代码实现如下:
<script type="text/javascript">
function read_excel(){
var filePath="D:\abcd9.com.xls"; //要读取的xls
var sheet_id=2; //读取第2个表
var row_start=3; //从第3行开始读取
var tempStr='';
try{
var oXL = new ActiveXObject("Excel.application"); //创建Excel.Application对象
}catch(err)
{
alert(err);
}
var oWB = oXL.Workbooks.open(filePath);
oWB.worksheets(sheet_id).select();
var oSheet = oWB.ActiveSheet;
var colcount=oXL.Worksheets(sheet_id).UsedRange.Cells.Rows.Count ;
for(var i=row_start;i<=colcount;i++){
if (typeof(oSheet.Cells(i,8).value)=='date'){ //处理第8列部分单元格内容是日期格式时的读取问题
d= new Date(oSheet.Cells(i,8).value);
temp_time=d.getFullYear()+"-"+(d.getMonth() + 1)+"-"+d.getDate();
}
else
temp_time=$.trim(oSheet.Cells(i,7).value.toString());
tempStr+=($.trim(oSheet.Cells(i,2).value)+" "+$.trim(oSheet.Cells(i,4).value)+" "+$.trim(oSheet.Cells(i,6).value.toString())+" "+temp_time+"\n");
//读取第2、4、6、8列内容
}
return tempStr; //返回
oXL.Quit();
CollectGarbage();
}
</script>执行此代码必须满足以下条件:
1、客户端计算机必须安装Microsoft Excel的ActiveX控件(通常安装完整版Microsoft Office即可),并且在浏览器弹出“此网站需要运行以下加载项......”的提示时,用户需手动允许其运行。若未允许,JavaScript在尝试创建Excel.Application对象时将抛出错误。 2、由于JavaScript直接读取本地Excel文件涉及安全风险,默认浏览器设置下Microsoft Excel ActiveX控件没有执行权限。解决方法如下: a. 点击浏览器“工具”菜单,选择“Internet选项”,进入“安全”标签页,并将当前网站添加到“可信站点”列表。 b. 点击“站点(S)”按钮,将该网站的地址添加至可信站点列表中; c. 点击“自定义级别(C)...”,在安全设置列表中找到“ActiveX 控件和插件”节点,将其下的“对未标记为可安全执行脚本的 ActiveX 控件初始化并执行脚本”选项设置为“启用”。