[英]Export HTML table to Excel - using jQuery or Java
我的JSP页面上有一个HTML表格,我希望通过单击按钮将其导出到Excel。
怎样才能解决这个问题?
(例如,我如何使用它可能是一个jQuery函数?)
用于演示目的的任何代码示例都应该很棒。
我会推荐Apache POI ,我们已经使用它多年,从来没有遇到任何问题。
网上有很多例子可以帮助您获得良好的开端,网站上的文档也很好: http : //poi.apache.org/spreadsheet/quick-guide.html
而是导出为CSV格式。 它也受Excel支持。 使用例如Apache POI HSSF或JExcepAPI导出为完全的XLS(X)格式是缓慢的并且占用内存。
导出为CSV相对简单。 您可以在此答案中找到完整的代码示例。
至于使用JavaScript导出到文件,如果没有Flash或服务器端的交互,这是不可能的。 在Flash中,只有Downloadify库可以导出到简单的txt文件。 此外,ExtJs似乎有一个CSV导出库 ,但我找不到任何可行的演示页面。
您可以使用像http://jsoup.org/这样的库来解析表格
获取数据后,可以将其存储为Excel兼容格式(CSV),或者使用Java Excel库(如POI)或使用JDBC将数据写入Excel工作表,请参阅此示例: 密码保护的Excel文件
我也花了很多时间将html转换为excel,经过大量的研发后我发现了最简单的方法。
创建隐藏字段,并将您的html数据传递给您的servlet或控制器,例如
<form id="formexcel" action="" method="post" name="formexcel"> <input type="hidden" name="exceldata" id="exceldata" value="" /> </form>
在您的href按钮上单击调用以下函数并使用document.formexcel.exceldata.value和document.formstyle.action中的servlet或控制器传递您的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库,至少将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插件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
使用JQuery导出为Excel文件格式是不可能的。
您可以尝试使用Java。 有很多库可以做到这一点。
您必须在服务器端(如servlet)创建一些内容来读取html并创建excel文件并将其提供给用户。
您可以使用此库来帮助您进行转换。
我建议您尝试http://code.google.com/p/gwt-table-to-excel/ ,至少是服务器部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.