您的位置:首页 > 其它

IE8 Automation 服务器不能创建对象 解决方法

2013-07-18 11:45 731 查看
结论,在ie8中无法解决 Automation 服务器不能创建对象



起因:自己想写个js测试下如何导出文件。。。

就在网上找了段代码想测试下。。。

<SCRIPT LANGUAGE="javascript">
function method1(tableid) {//整个表格拷贝到EXCEL中
var curTbl1 = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");
//创建AX对象excel
var oWB = oXL.Workbooks.Add();
//获取workbook对象
var oSheet = oWB.ActiveSheet;
//激活当前sheet
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl1);
//把表格中的内容移到TextRange中
sel.select();
//全选TextRange中内容
sel.execCommand("Copy");
//复制TextRange中内容
oSheet.Paste();
//粘贴到活动的EXCEL中
oXL.Visible = true;
//设置excel可见属性
}
function method2(tableid) //读取表格中每个单元到EXCEL中
{
var curTbl2 = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");
//创建AX对象excel
var oWB = oXL.Workbooks.Add();
//获取workbook对象
var oSheet = oWB.ActiveSheet;
//激活当前sheet
var Lenr = curTbl2.rows.length;
//取得表格行数
for (i = 0; i < Lenr; i++)
{
var Lenc = curTbl2.rows(i).cells.length;
//取得每行的列数
for (j = 0; j < Lenc; j++)
{
oSheet.Cells(i + 1, j + 1).value = curTbl2.rows(i).cells(j).innerText;
//赋值
}
}
oXL.Visible = true;
//设置excel可见属性
}
</SCRIPT>


ActiveXObject //该对象是IE浏览器独有的对象,也就是说其他浏览器不兼容。(IE8也不能用。)


测试时:Automation 对象一直创建不了。。。擦 后来经过多方查证得知如上结论。

最原始的需求: 后台java 前台 flex ,页面为MecGrid 的表格,先已实现导出excel ,但需求修改为,点导出按钮时,需要有 打开/保存/取消 的那种选项。

MecGird 导出excel 好办:以下为flex 代码(SDK版本为3.3)

var exp:MecExporter = new MecExporter();
exp.charset="gbk";
exp.AddDataGrid(mecex, "");//mecex 即为MecGrid对象
var ebt:ByteArray = exp.Export2BiffExcel();
//保存excel
var f:FileReference = new FileReference();
f.save(ebt,(this.title==""?"报表":this.title)+".xls");


但那个打开,貌似没法做,就想到了 js ,尝试了半天,发现 js 不能写出excel 文件。IE中ActiveXObject 可以实现,但ie8 还不支持那个类,这。。。

得出结论:看来前台是没有办法稳妥的解决这个需求了。现在的想法就是从后台来。。。

具体后台方案之后在上传。

扩展阅读:JS读取本地文件及目录的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: