将 HTML 表格导出到 Excel - 使用 jQuery 或 Java
Posted
技术标签:
【中文标题】将 HTML 表格导出到 Excel - 使用 jQuery 或 Java【英文标题】:Export HTML table to Excel - using jQuery or Java 【发布时间】:2011-03-13 12:22:40 【问题描述】:我的 JSP 页面上有一个 html 表格,我想通过单击按钮将其导出到 Excel。
最好的方法是什么?
(例如,我将如何使用可能是 jQuery 函数来做到这一点?)
任何用于演示目的的代码示例都应该很棒。
【问题讨论】:
【参考方案1】:你可以使用像http://jsoup.org/这样的库来解析表格
获取数据后,可以将其存储为与 Excel 兼容的格式 (CSV),或者使用 Java Excel 库进行 POI 等,或者使用 JDBC 将数据写入 Excel 表,请参见此示例: Password Protected Excel File
【讨论】:
【参考方案2】: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');
【讨论】:
【参考方案3】:我一直在使用 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
【讨论】:
【参考方案4】:经过大量研发后,我也花了很多时间将 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 中的 html 数据和 document.formstyle.action 中的 servlet 或控制器
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】:我可以建议你试试http://code.google.com/p/gwt-table-to-excel/,至少是服务器部分。
【讨论】:
【参考方案6】:而是导出为CSV 格式。 Excel 也支持它。使用例如Apache POI HSSF 或JExcepAPI 导出到完全有价值的XLS(X) 格式会很慢并且会占用内存。
导出为 CSV 相对简单。您可以在this answer 中找到完整的代码示例。
至于使用 javascript 导出文件,如果没有 Flash 或服务器端的交互,这是不可能的。在 Flash 中,目前只有 Downloadify 库可以导出为简单的 txt 文件。另外,ExtJs好像有CSV export library,但是我找不到任何可行的demo page。
【讨论】:
【参考方案7】:我会推荐Apache POI,我们已经使用了很多年,从来没有遇到过任何问题。
网上有很多例子可以很好地开始,网站上的文档也不错:http://poi.apache.org/spreadsheet/quick-guide.html
【讨论】:
【参考方案8】:您必须在服务器端创建一些东西(如 servlet)来读取 html 并创建 excel 文件并将其返回给用户。
您可以使用this library 来帮助您进行转换。
【讨论】:
【参考方案9】:无法使用 JQuery 导出为 Excel 文件格式。
您可以尝试使用 Java。有很多图书馆可以做到这一点。
【讨论】:
不,那不是真的。绝对有可能!以上是关于将 HTML 表格导出到 Excel - 使用 jQuery 或 Java的主要内容,如果未能解决你的问题,请参考以下文章
如何将 HTML 表格导出到 Chrome 和 IE 支持的 Excel?