• jquery实现excel导出


    最近要实现在web页面上导出excel文件的功能.由于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")就可以了.

  • 相关阅读:
    Laravel使用Eloquent ORM操作数据库
    Laravel查询构造器的使用方法整理
    [wordpress]后台自定义菜单字段和使用wordpress color picker
    Thinkphp kindeditor 内容转义
    WordPress 后台提示输入FTP信息
    [记录]gulp compass
    symonfy 项目根目录下没有 bin/console 文件的解决方法
    [gulp] gulp lint 忽略文件
    [转载]ubuntu Atheros Communications Device 1083 驱动
    SharpDevelop 编译时,任务失败,因为未找到“resgen.exe”的解决方法
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2999658.html
Copyright © 2020-2023  润新知