将HTML表导出到Excel - 使用jQuery或Java

时间:2010-07-08 18:30:34

标签: java jquery html excel jsp

我在JSP页面上有一个HTML表格,我希望通过点击按钮将其导出到Excel。

最好的解决方法是什么?

(例如,我如何使用它可能是一个jQuery函数?)

任何用于演示目的的代码示例都应该很棒。

9 个答案:

答案 0 :(得分:6)

我会推荐Apache POI,我们多年来一直使用它,从未遇到任何问题。

网上有很多例子可以帮助您获得良好的开端,网站上的文档也很好:http://poi.apache.org/spreadsheet/quick-guide.html

答案 1 :(得分:4)

而是导出为CSV格式。它也受Excel支持。使用例如Apache POI HSSFJExcepAPI导出为完全可用的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&我找到了最简单的方法。

  1. 创建隐藏字段,然后将您的html数据传递给您的servlet或控制器,例如

    <form id="formexcel" action="" method="post" name="formexcel">
        <input type="hidden" name="exceldata" id="exceldata" value="" />
    </form>
    
  2. 在你的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();
    }
    
  3. 现在在您的控制器或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