导出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了最简单的方法。
-
创build隐藏字段,并在那里传递你的HTML数据到你的servlet或控制器例如
<form id="formexcel" action="" method="post" name="formexcel"> <input type="hidden" name="exceldata" id="exceldata" value="" /> </form>
-
在你的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(); }
-
现在在你的控制器或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