在我的asp页面中,我必须通过java脚本在IE中打开一个csv文件。我使用的代码如下:
csvWindow = window.open("/com/csv/"+csvFileName, "datacsv", "toolbar=yes,location=no,directories=yes,status=no,menubar=yes,scrollbars=yes,resizable=yes,width=790,height=450,screenX=50,screenY=25,left=50,top=25");
代码正在IIS服务器中运行。
当我运行此代码并打开csv文件时,它会给出以下消息
Microsoft Office Excel cannot access the file "http://192.168.3.228:107/com/csv/CSV_file_1345728.csv". There are several possible reasons: The file name or path does not exist the file is being used by another program the workbook you are trying yo save has the same name as a currently open workbook.
但正在创建文件。所以路径是正确的,我认为该文件也没有被其他程序使用
请帮助我该怎么办
答案 0 :(得分:5)
问题在于,当Excel打开时,它将尝试自己获取CSV文件,这是自2007年以来Office应用程序中的行为发生变化。但是,由于Excel在不同的进程中运行,因此它不会发送任何本机的cookie在登录期间生成。当网站收到请求时,它将以401状态响应。
我知道没有简单的解决方案,结果令人满意。以下是一些解决方案,但都有缺点。
答案 1 :(得分:3)
如果要使用MS Excel打开文件,可以尝试不直接提供文件,但要编写一个带有Content-Type=application/force-download
的ASP页面,真实文件名以.css
结尾,并且实际文件内容。在这种情况下,MSIE将首先将文件下载到本地磁盘缓存,然后将其提供给MS Excel。
如果您只想在浏览器窗口中显示CSV文本,最好的方法是更改其扩展名或使用Content-Type=text/plain
创建一些代理页面,而根本不提及CSV。 CSV / Excel关联似乎在MSIE中是硬编码的。