将 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?

html 将HTML表格转换为CSV以导出到Excel。

tableexport.js 导出无数据怎么解决

python根据nagios配置文件将监控的服务联系人等信息导出到excel表格

用java将数据导出到wps表格中,怎么实现

怎样将MySQL数据导出到Excel表中