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

9
我有一个HTML表格在我的JSP页面上,我想在按钮点击时将其导出到Excel中。如何最好地实现这一点?(例如,我可以使用jQuery函数来完成吗?)任何演示目的的代码示例都将非常好。
9个回答

7

4
最好导出为CSV格式,因为Excel也支持该格式。导出到完整的XLS(X)格式,例如使用Apache POI HSSFJExcepAPI,速度慢且占用内存。导出到CSV相对简单。您可以在this answer中找到一个完整的代码示例。
关于使用JavaScript导出文件,没有Flash或服务器端的交互是不可能的。在Flash中,目前只有Downloadify库可以导出简单的txt文件。此外,ExtJs似乎有一个CSV导出库,但我找不到任何可行的演示页面。

3

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

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


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

1

我也花了很多时间将HTML转换为Excel,在经过大量研究和开发后,我发现以下是最简单的方法。

  1. 创建隐藏字段,在其中将您的HTML数据传递给您的servlet或控制器,例如:
  2. <form id="formexcel" action="" method="post" name="formexcel">
        <input type="hidden" name="exceldata" id="exceldata" value="" />
    </form>
    
  3. 在href按钮上单击时调用以下函数,并使用document.formexcel.exceldata.value传递您的HTML数据,将您的servlet或控制器放在document.formstyle.action中:
  4. 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();
    }
    
  5. 现在在您的控制器或servlet中编写以下代码:
  6. 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>

现在只需对您要导出的表格调用该脚本即可。
$("#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


0

0

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

您可以尝试使用Java。有很多库可以实现这个功能。


不,那不是真的。这是完全可能的! - Jonas Lomholdt

0

您需要在服务器端创建一个类似于servlet的东西来读取HTML并创建Excel文件,然后将其返回给用户。

您可以使用这个库来帮助您进行转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接