我在将我的 html 表导出到 Excel 时遇到问题,这是我尝试过的。
window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('#myTableDiv').html()));
在 chrome 上运行惊人,但在 Internet Explorer 上无法运行;只需转到带有 url 中数据的新选项卡(在 IE10 上尝试过)。所以我尝试检查 IE,然后对 IE 浏览器使用 ActiveXObject 方法。
var objExcel = new ActiveXObject ("Excel.Application");
但是在创建对象时它给了我错误,我的电脑上有 Excel 2013。这种方法似乎不太可靠。
所以现在我开始尝试使用服务器端语言(JSP)。
这是我目前的尝试。
$('.toExcel').click(function(){
$.post('controllers/excel.jsp?tableHTML=' + encodeURIComponent($('#myTableDiv').html()), function(data) {
});
});
还有我的 JSP
<!DOCTYPE html>
<%@ page import="java.io.PrintWriter" %>
<%@ page contentType="application/excel" language="java" %>
<%
response.reset();
response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=\"report.xls\"");
PrintWriter op = response.getWriter();
String CSV = request.getParameter("tableHTML");
op.write(CSV);
%>
我知道这至少存在一些问题。
- 发布到 url 时没有下载提示。
- 只有这么多的html可以作为参数
当我导航到 chrome 中的请求 url 时,它会下载文件。当我导航到 IE 10 中的请求 url 时,我收到以下错误:
HTML1527: DOCTYPE expected. The shortest valid doctype is "<!DOCTYPE html>".
excel.jsp, line 1 character 1
谁能帮助我提供适用于所有浏览器的可靠解决方案?