由于javascript本身是没有权限操作本地文件的,除非使用activex,但这东西麻烦又不安全,完全不想用.所以从页面的表格中获得数据保存成本地文件的办法是行不通了.
我们想要导出的是表格中的数据,表格中的数据又是从服务器来的,那我们把服务器上的数据下到本地保存成文件不就可以了.
服务端实现代码:
. 代码如下:
servletoutputstream out = null;
try{
//设置输出csv的头信息
response.setcontenttype("text/csv");
string disposition = "attachment; filename=data.csv";
response.setheader("content-disposition", disposition);
//获得输出对象
out = response.getoutputstream();
//获得数据
byte[] blobdata = csvparser.parsecsv(rs).getbytes();
out.write(blobdata);
out.flush();
out.close();
}catch(exception e){
throw e;
}finally{
if(out != null)
out.close();
}
客户端我是利用iframe进行下载的。写了个比较通用的方法,大家可以把这个函数放到某个js文件中,使用时直接在页面调用即可
. 代码如下:
//带入url根据查询的数据返回csv
function bsuexportcsv(url){
//如果页面中没有用于下载iframe,增加iframe到页面中
if($('#downloadcsv').length<=0)
$('body').append("<iframe id=\"downloadcsv\" style=\"display:none\"></iframe>");
$('#downloadcsv').attr('src',url);
}
先判断页面中是否有id为downloadcsv的iframe如果没有在body标签中加入iframe.然后将iframe的src属性设置为传入的url地址.
使用时知道在要导出的页面调用bsuexportcsv("https://localhost:8080/csvservelt")就可以了.
如对本文有疑问, 点击进行留言回复!!
Web编程入门 2.1 jQuery Validate方法 以及批量验证的修改方法
js事件委托、Cookie缓存、转码解码、严格模式以及异常处理
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十)整理维护
网友评论