繁体   English   中英

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

[英]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 HSSFJExcepAPI导出为完全的XLS(X)格式是缓慢的并且占用内存。

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


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

您可以使用像http://jsoup.org/这样的库来解析表格

获取数据后,可以将其存储为Excel兼容格式(CSV),或者使用Java Excel库(如POI)或使用JDBC将数据写入Excel工作表,请参阅此示例: 密码保护的Excel文件

我也花了很多时间将html转换为excel,经过大量的研发后我发现了最简单的方法。

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM