2010-07-08 77 views
9

我在我的JSP页面上有一个HTML表格,我希望通过单击按钮将其导出到Excel。
要做这件事的最好方法是什么?
(例如,我将如何使用可能是jQuery函数。)将HTML表导出为ex​​cel - 使用jQuery或Java

演示的任何代码示例。目的应该很大。

谢谢,
Pritish。

回答

0

用JQuery导出为Excel文件格式是不可能的。

您可以试用Java。有很多库可以做到这一点。

+0

不,那不是真的。这绝对有可能! – 2015-11-25 21:15:49

0

您将不得不在服务器端创建一些东西(如servlet)来读取html并创建excel文件并将其提供给用户。

您可以使用this library来帮助您进行转换。

4

而出口CSV格式。它也支持Excel。使用例如Apache POI HSSFJExcepAPI导出为完全适用的XLS(X)格式的操作速度较慢且内存占用较大。

导出为CSV相对简单。您可以在this answer中找到完整的代码示例。


至于出口到使用JavaScript文件,这是不可能没有Flash的互动或服务器端。在Flash中,至今只有Downloadify库可以导出为简单的txt文件。此外,ExtJs似乎有一个CSV export library,但我找不到任何可行的演示页面。

1

Excel可以加载CSV(逗号分隔值)文件,这些文件基本上只是包含所有可以放入用逗号分隔的单独Excel单元格的文件。

我不知道jQuery如何处理将信息推送到可以下载的文件中,但似乎已经编写了一个jQuery库,至少可以将html表格转换为CSV格式,并且它在这里: http://www.kunalbabre.com/projects/table2CSV.php

编辑(2016年2月29日): 您可以结合使用table2csv实现以上FileSaver.js(这对于W3C HTML5规范saveAs()的包装)。

的使用将最终看起来像:

var resultFromTable2CSV = $('#table-id').table2CSV({delivery:'value'}); 

var blob = new Blob([resultFromTable2CSV], {type: "text/csv;charset=utf-8"}); 

saveAs(blob, 'desiredFileName.csv'); 
+0

这不会创建用于下载的CSV文件。这只会在弹出窗口的textarea中显示生成的CSV内容,最终用户需要自己复制粘贴。这并不符合我所想的要求;) – BalusC 2010-07-08 19:05:31

+0

回答更新为6年后更有用。 – dmott 2016-02-29 20:14:26

3

您可以使用图书馆像http://jsoup.org/

解析表你得到的数据后,可以将其存储在Excel兼容的格式(CSV )或使用Java Excel中,像POI,或使用JDBC将数据写入Excel工作表库,请参阅下面的例子: Password Protected Excel File

1

我也花了很多时间将html转换为excel后很多R & D我发现以下最简单的方法。

  1. 创建隐藏字段,并在你的HTML数据传递到你的servlet或控制器例如

    <form id="formexcel" action="" method="post" name="formexcel"> 
        <input type="hidden" name="exceldata" id="exceldata" value="" /> 
    </form> 
    
  2. 在您的href点击通话按钮下面的功能和使用文档通过你的HTML数据。 formexcel.exceldata.value和你的servlet或控制器document.formstyle.action

    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()); 
    
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> 

现在,只需调用脚本你想要exportet表。

$("#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