导出HTML表格到excel – 使用jQuery或Java

我在我的JSP页面上有一个HTML表格,我想通过点击button导出到Excel。
什么是最好的方式去做这个?
(例如,我将如何使用可能是一个jQuery函数。)

演示的任何代码示例。 目的应该很大。

谢谢,
Pritish。

我会推荐Apache POI ,我们一直在使用它,从来没有任何问题。

很多例子在线获得一个好的开始,并且网站上的文档也很好: http : //poi.apache.org/spreadsheet/quick-guide.html

而是导出为CSV格式。 它也支持Excel。 使用例如Apache POI HSSF或JExcepAPI导出为完全可用的XLS(X)格式是缓慢的并且占用内存。

导出为CSV相对简单。 你可以在这个答案中find一个完整的代码示例。


至于使用JavaScript导出到文件,如果没有Flash或服务器端的交互,这是不可能的。 在Flash中,只有Downloadify库可以导出为简单的txt文件。 此外,ExtJs似乎有一个CSV导出库 ,但我找不到任何可行的演示页面。

你可以使用库parsing表,如http://jsoup.org/

获取数据后,可以将其存储为Excel兼容格式(CSV),或使用java excel库(如POI)或使用JDBC将数据写入Excel表中,请参阅此示例: 密码保护的Excel文件

我也花了很多时间将html转换为excel,经过大量的研发工作后,我find了最简单的方法。

  1. 创build隐藏字段,并在那里传递你的HTML数据到你的servlet或控制器例如

    <form id="formexcel" action="" method="post" name="formexcel"> <input type="hidden" name="exceldata" id="exceldata" value="" /> </form> 
  2. 在你的hrefbutton上点击调用下面的函数,并在document.formme.formstyle.action中使用document.formexcel.exceldata.value和你的servlet或controller来传递你的html数据。

     function exportDivToExcel() { document.formexcel.exceldata.value=$('#htmlbody').html(); $("#lblReportForPrint").html("Procurement operation review report"); document.formstyle.method='POST'; document.formstyle.action='${pageContext.servletContext.contextPath}/generateexcel'; document.formstyle.submit(); } 
  3. 现在在你的控制器或servlet中写下面的代码

     StringBuilder exceldata = new StringBuilder(); exceldata.append(request.getParameter("exceldata")); ServletOutputStream outputStream = response.getOutputStream(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=\"exportexcel.xls\""); outputStream.write(exceldata.toString().getBytes()); 

Excel可以加载CSV(逗号分隔值)文件,这些文件基本上只是包含所有可以进入用逗号分隔的Excel单元格的文件。

我不太了解jQuery如何处理将信息推送到您要下载的文件中,但似乎已经编写了一个jQuery库,至less可以将html表格转换为CSV格式,它在这里: http:// www .kunalbabre.com /项目/ table2CSV.php

编辑(2016年2月29日):您可以将上面的table2csv实现与FileSaver.js (它是HTML5 W3C saveAs()规范的包装)一起使用。

用法将最终看起来像这样:

 var resultFromTable2CSV = $('#table-id').table2CSV({delivery:'value'}); var blob = new Blob([resultFromTable2CSV], {type: "text/csv;charset=utf-8"}); saveAs(blob, 'desiredFileName.csv'); 

使用JQuery导出为Excel文件格式是不可能的。

你可以尝试使用Java。 有很多库可以做到这一点。

你将不得不在服务器端创build一些东西(比如一个servlet)来读取html并创buildexcel文件并将其提供给用户。

你可以用这个库来帮助你完成转换。

我可以build议你尝试http://code.google.com/p/gwt-table-to-excel/ ,至less服务器部分。

我一直在使用jQuery插件table2excel 。 它工作得很好,不需要服务器端的编码。

使用它很容易。 只需包含jQuery

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 

现在包含table2excel脚本(请记住更改src目标以匹配您的目标)

 <script src="dist/jquery.table2excel.min.js"></script> 

现在只需调用你想要导出的表格上的脚本。

 $("#yourHtmTable").table2excel({ exclude: ".excludeThisClass", name: "Worksheet Name", filename: "SomeFile" //do not include extension }); 

附加button也很容易:

 $("button").click(function(){ $("#table2excel").table2excel({ // exclude CSS class exclude: ".noExl", name: "Excel Document Name" }); }); 

所有的例子都直接从作者github页面和jqueryscript.net