jquery实现excel导出的方法


Posted in Javascript onApril 04, 2013

由于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();
}

有句代码有必要解释一下CSVParser.parseCsv(rs).  CSVParser是我在其他地方实现的一个将从数据库中查出的ResultSet对象转换为CSV数据的类.parseCsv方法的参数rs就是ResultSet对象.返回的就是csv格式的字符串数据

客户端我是利用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);
}

url是要请求数据的servlet的地址,该地址一定是要返回csv格式的数据

先判断页面中是否有id为downloadcsv的iframe如果没有在body标签中加入iframe.然后将iframe的src属性设置为传入的url地址.

使用时知道在要导出的页面调用bsuExportCsv("http://localhost:8080/csvservelt")就可以了.

Javascript 相关文章推荐
Javascript 实用小技巧
Apr 07 Javascript
js遍历子节点子元素附属性及方法
Aug 19 Javascript
Javascript 绘制 sin 曲线过程附图
Aug 21 Javascript
node.js中的querystring.escape方法使用说明
Dec 10 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
jquery图片滚动放大代码分享(1)
Aug 25 Javascript
用Vue写一个分页器的示例代码
Apr 22 Javascript
学习JS中的DOM节点以及操作
Apr 30 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 Javascript
关于jquery input textare 事件绑定及用法学习
Apr 03 #Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 #Javascript
让低版本浏览器支持input的placeholder属性(js方法)
Apr 03 #Javascript
用Jquery重写windows.alert方法实现思路
Apr 03 #Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 #Javascript
关于js注册事件的常用方法
Apr 03 #Javascript
JavaScript栏目列表隐藏/显示简单实现
Apr 03 #Javascript
You might like
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php 发送带附件邮件示例
2014/01/23 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
PHP 文件上传限制问题
2019/09/01 PHP
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
超简单的Python HTTP服务
2019/07/22 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python库matplotlib绘制坐标图
2019/10/18 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python调用.NET库的方法步骤
2019/12/27 Python
pandas的resample重采样的使用
2020/04/24 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
考核评语大全
2014/04/29 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
公司备用金管理制度
2015/08/04 职场文书