我在JSP页面上有一个HTML表格,我希望通过点击按钮将其导出到Excel。
最好的解决方法是什么?
(例如,我如何使用它可能是一个jQuery函数?)
任何用于演示目的的代码示例都应该很棒。
答案 0 :(得分:6)
我会推荐Apache POI,我们多年来一直使用它,从未遇到任何问题。
网上有很多例子可以帮助您获得良好的开端,网站上的文档也很好:http://poi.apache.org/spreadsheet/quick-guide.html
答案 1 :(得分:4)
而是导出为CSV格式。它也受Excel支持。使用例如Apache POI HSSF或JExcepAPI导出为完全可用的XLS(X)格式是缓慢且占用内存的。
导出为CSV相对简单。您可以在this answer中找到完整的代码示例。
对于使用JavaScript导出到文件,如果没有Flash或服务器端的交互,这是不可能的。在Flash中,只有Downloadify库可以导出到简单的txt文件。此外,ExtJs似乎有CSV export library,但我找不到任何可行的演示页面。
答案 2 :(得分:3)
您可以使用http://jsoup.org/
等库来解析表格获取数据后,您可以将其存储为Excel兼容格式(CSV),或者使用Java Excel库(如POI)或使用JDBC将数据写入Excel工作表,请参阅以下示例: Password Protected Excel File
答案 3 :(得分:1)
Excel可以加载CSV(逗号分隔值)文件,这些文件基本上只是包含以逗号分隔的单独Excel单元格中所有内容的文件。
我不太了解jQuery如何处理将信息推送到您要下载的文件中,但似乎已经编写了一个jQuery库,至少将html表转换为CSV格式,它在这里: http://www.kunalbabre.com/projects/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');
答案 4 :(得分:1)
我也花了很多时间将html转换为excel,经过大量的R&我找到了最简单的方法。
创建隐藏字段,然后将您的html数据传递给您的servlet或控制器,例如
<form id="formexcel" action="" method="post" name="formexcel">
<input type="hidden" name="exceldata" id="exceldata" value="" />
</form>
在你的href点击调用跟随函数的按钮上,并使用document.formexcel.exceldata.value和你的servlet或控制器在document.formstyle.action中传递你的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());
答案 5 :(得分:0)
使用JQuery导出为Excel文件格式是不可能的。
您可以尝试使用Java。有很多库可以做到这一点。
答案 6 :(得分:0)
您必须在服务器端(如servlet)创建一些内容来读取html并创建excel文件并将其提供给用户。
您可以使用this library来帮助您进行转换。
答案 7 :(得分:0)
我建议你尝试http://code.google.com/p/gwt-table-to-excel/,至少是服务器部分。
答案 8 :(得分:0)
我一直在使用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").click(function(){
$("#table2excel").table2excel({
// exclude CSS class
exclude: ".noExl",
name: "Excel Document Name"
});
});
所有示例都直接来自作者github页面和jqueryscript.net