我已经发布了一个关于通过Internet Explorer(使用ActiveX对象)从Javascript数组一次写一个范围到excel表的问题,因为虽然这可以逐个单元地完成,但这种逐个单元格的方法是不可接受的慢,所以必须立即写出范围。
不幸的是,虽然这个网站可能很精彩,但是没有人给我答案(叹息!)。
所以我尝试了其他的东西:在aspx工作表中,在客户端,我将我的csv堆栈(我非常想写一个即时打开的excel文件)写为本地客户端磁盘上的CSV文件。这可以正常工作,如果我通过Excel打开CSV文件,我可以立即看到并正确解析。良好...
但事实是,我希望用户在我的apsx页面上单击Excel图标后立即在Excel窗口中获取此CSV文件,而不必交换到他的文件资源管理器并且无法导航到fetch他自己的CSV文件。
所以,我打算使用Excel ActiveX对象的“Open”方法,参数精确,必须用分号进行csv解析:所以,我使用以下指令:
<script type='text/javascript'>
applic = new ActiveXObject("Excel.Application");
classeur = applic.Workbooks.Open(nomFichier,"","","4");
</script>
现在,又出现了另一个问题(我最终还是要讨厌微软吗?):看来用Javascript,我不能使用多参数调用那么ActiveX函数,因为我也试过“OpenText”并且同样的问题:
指示:
classeur = applic.Workbooks.Open(nomFichier)
可以正常工作,但只要我添加至少第二个参数,就像这样:
classeur = applic.Workbooks.Open(nomFichier,"")
我的导航器失败了!
所以我回到第一个问题,仍然无法一次解析Excel范围内的csv堆栈......
所以这是我的问题: 是否有一种我不知道的特殊语法,允许将几个参数从Javascript传递到Activex函数?
我希望这次和你们所有聪明的人在一起会更幸运...
谢谢。
答案 0 :(得分:0)
好吧,最后我找到了关于actveX语法的问题的答案:虽然微软将参数定义为“Variant”,但必须注意两件事: 1)Javascript不允许空白参数,例如:
classeur = applic.Workbooks.Open(nomFichier,,,4); // false Javascript syntax
这就是我放置空字符串的原因。但另一个问题来自ActiveX调用: 2)ActiveX不接受空字符串而不是Variant参数,如下所示:
classeur = applic.Workbooks.Open(nomFichier,"","","4"); // false ActiveX syntax
事实上,当我尝试以下语法时,我的功能可以正常工作:
classeur = applic.Workbooks.Open(nomFichier,2,false,4); // accepted syntax
因此,不是引发问题的参数数量,而是javascript和ActiveX的组合限制。