IE支持window.clipboardData.setData, 可以直接对剪贴板的内容进行操作, 实现方式如下:
1 function exportXls(){ 2 window.clipboardData.setData("Text",document.all('rpTB').outerHTML); 3 try { 4 var ExApp = new ActiveXObject("Excel.Application") 5 var ExWBk = ExApp.workbooks.add() 6 var ExWSh = ExWBk.worksheets(1) 7 ExApp.DisplayAlerts = false 8 ExApp.visible = true 9 } catch(e) { 10 alert("您的电脑没有安装Microsoft Excel软件!") 11 return false 12 } 13 ExWBk.worksheets(1).Paste; 14 }
其中rpTB为表格的id
上面的处理方式在FF, Chrome等浏览器中不兼容. 转换为导出cvs格式的文件, 使用到了jquery的插件table2CSV.js, 下面记录处理方式:
<form action="export-excel.jsp" method ="post" >
......
<input type="submit" class="btn org red" value="导出" onclick="getCSVData()">
</form> ...... <table id="rpTB" class="mytable" style=" 100%;"></table> ...... function getCSVData(){ if($('#rpTB').html() != ''){ var csv_value=$('#rpTB').table2CSV({ delivery:'value' }); $("#csv_text").val(csv_value); } else{ alert("没有查到符合条件的数据"); } }
export-excel.jsp的内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% response.setHeader("Content-type","application/octet-stream"); response.setHeader("Content-Disposition","attachment; filename="data.csv"");//生成的csv名为data.csv String data = request.getParameter("csv_text");//把数据写入到浏览器,以下载的方式 out.println(data); %>