87,907
社区成员
发帖
与我相关
我的任务
分享
if (!document.all) { alert('非IE浏览器无法直接JS控制保存文件!'); return false; }
<div id="dv">
<table>
<tr>
<th>
<table><tr><th></th><th></th><th></th></tr></table>
</th>
<th>
<table><tr><th></th><th></th><th></th></tr></table>
</th>
<th>
<table><tr><th></th><th></th><th></th></tr></table>
</th>
</tr>
</table>
</div>
<iframe id="ifr" style="position:absolute;left:-999px;top:-999px;" src="javascript:void(0)"></iframe>
<script type="text/javascript">
window.onload = function () {
if (!!document.all) { alert('非IE浏览器无法直接JS控制保存文件!'); return false; }
var doc = document.getElementById('ifr').contentWindow.document;
doc.open();
doc.write(document.getElementById('dv').innerHTML);
doc.close();
doc.execCommand('SaveAs', 'xxx.csv');
}
</script>
<%
response.contenttype="text/csv"'设置类型为csv
response.AddHeader "content-disposition","attachment;filename=""xxxxxxx.csv"""'设置以附件形式保存
response.Write request.Form("csv")'输出客户端提交的csv内容即可
%>
test.html
<!--这个是总的容器,提交容器的innerHTML-->
<div id="dv">
<table>
<tr>
<th>
<table><tr><th></th><th></th><th></th></tr></table>
</th>
<th>
<table><tr><th></th><th></th><th></th></tr></table>
</th>
<th>
<table><tr><th></th><th></th><th></th></tr></table>
</th>
</tr>
</table>
</div>
<!---------提交表单前设置csv控件的内容未要导出的容器的innerHTML,将表单提交到隐藏的iframe来实现无刷新下载------------------->
<form method="post" target="_blank" action="save.asp" onsubmit="this.csv.value=document.getElementById('dv').innerHTML"><input type="hidden" name="csv" /><input type="submit" value="保存" /></form>
<iframe name="ifr" style="display:none"></iframe>
客户端只能靠flash的实现保存文件的方法了,不过我没找到这种方法能将页面的内容传递给flash然后flash负责弹出保存内容对话框的,除非是flash air应用,而不是web的