如何用javascript在IE中打开csv文件
how to open csv file in IE in by javascript
在我的asp页面中,我必须用java脚本在IE中打开一个csv文件。我使用的代码如下:
csvWindow=window.open("/com/csv/"+csvFileName,"datacsv","工具栏=是,位置=否,目录=是,状态=否,菜单栏=是,滚动条=是,可调整大小=是,宽度=790,高度=450,屏幕X=50,屏幕Y=25,左侧=50,顶部=25");
代码正在IIS服务器中运行。
当我运行此代码并打开csv文件时,它会给出以下消息
Microsoft Office Excel无法访问该文件"http://192.168.3.228:107/com/csv/CSV_file_1345728.csv"。可能有以下几个原因:文件名或路径不存在该文件正被另一个程序使用您试图保存的工作簿与当前打开的工作簿同名。
但文件正在创建中。所以路径是正确的,我认为该文件也没有被另一个程序使用
请帮我做什么
问题是,当Excel打开时,它会尝试获取CSV文件本身,这是自2007年以来office应用程序行为的变化。但是,由于Excel在不同的进程中运行,它不会发送登录过程中生成的任何cookie。当网站收到请求时,它将以401状态进行响应。
据我所知,没有任何简单的解决方案能取得完全令人满意的结果。这里有许多解决方案,但都有缺点。
- 使身份验证cookie持久化,这将允许Office应用程序获取和发送cookie。不利的一面是,即使在客户端机器重新启动后,用户仍会保持持久的日志记录(很像Stackoverflow的工作方式)
- 使用标准的HTTP身份验证协议,如"基本"或"协商"。不利的一面是,这将导致Excel显示一个登录框,用户必须再次登录。此缺点的一个例外是对IIS框使用"协商"或"NTLM",在IIS框中,网站注册为IE的Intranet区域的一部分,在这种情况下,excel使用的HTTP堆栈将尝试使用当前用户凭据
- 有一个服务器端脚本,可以匿名运行,发送csv文件,并在URL中包含一些唯一的ID(如GUID),这是一次性访问权限。设置起来要复杂得多
如果你想用MS Excel打开文件,你可以试着不直接提供文件,而是用Content-Type=application/force-download
、以.css
结尾的真实文件名和实际文件内容编写一个ASP页面。在这种情况下,MSIE将首先将文件下载到本地磁盘缓存,然后将其馈送到MS Excel。
如果你只想在浏览器窗口中显示CSV文本,也许最好的办法是更改其扩展名,或者用Content-Type=text/plain
制作一些代理页面,而根本不提及CSV。CSV/Excel关联似乎是在MSIE中硬编码的。
相关文章:
- 通过CSV文件上载更新数据库表
- 在.csv文件中写入学位符号
- PERL-下载CSV文件不完整
- 将CSV文件从URL导入Node.js
- Get方法获取csv文件的内容
- 将JSON转换为放入Sdcard中的CSV文件
- 如何使用d3.js从csv文件中绘制areaplot?请任何人分享代码
- 正在以javascript读取本地csv文件
- 处理字段中带有换行符的csv文件-node.js
- 如何将CSV数据从变量下载到CSV文件
- Safari 5.1.7下载文件名未知的csv文件
- 如何读取csv文件并将其转换为javascript中的对象
- 尝试从csv文件中检索单个值时出现问题
- 如何用javascript下载巨大的CSV文件
- 在将csv文件中的数据分配给数组变量时增强了d3代码
- 如何使用javascript更新csv文件
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 将Excel/CSV文件中的数据导入angularjs-json对象中
- 正在读取高图表中上载的csv文件
- 如何使用 Java 脚本从 csv 文件中查找每列的数据类型