繁体   English   中英

在JSP中将数据从表导出到Excel

[英]Export data from a table to Excel in JSP

我有一个带有表的Web应用程序。 而且我需要向excel按钮添加导出,以便在单击按钮时下载页面中的当前表格。 我尝试了以下代码:

<script type="text/javascript">
var tableToExcel = (function() {
  var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})()
</script>

我从互联网上得到的。 对于chrome,它可以正常工作,但是在firefox中,它将文件下载为xxx.xls.part ,对于Internet Explorer不起作用。 我不知道哪个浏览器用户将要使用,所以我需要它在所有浏览器上都能工作。

我在这里做什么错了? 还是有其他方法可以做到这一点。

请帮助。

提前致谢。

注意:我知道这类问题会被问过几次,但是在我看来,这些问题都不起作用。 所以请帮忙。

注意2:我有一个约束,我不能使用任何外部库,例如poi或jxls

您发布的Javascript代码生成一个data: URI,其中包含“ Excel HTML”文件,而不是真正的Excel工作簿(XLS或XLSX)文档。

data:大多数当前版本的浏览器(IE8和更高版本)都支持URI( 请参阅Wikipedia ),但是出于安全原因,IE8仅支持图像的数据URI。

大多数“导出到Excel”实现只生成一个Excel可以操作的CSV文件,但是,这意味着您不能包含格式,公式,多个工作表和宏之类的内容。

使用新的Office Open XML标准,您可以使用标准的Zip文件和XML库(存在于基本Java库中)来生成和修改Office文档,但是OOXML文档非常复杂,因此这将需要大量工作(除非您可以找到)已经完成此操作的其他任何人)。 出于好奇,您为什么不能使用外部库? 只需在项目中引用其Jar文件并将其捆绑即可。

替代方法是只生成“ Excel HTML”文件,就像您现在正在做的那样,但是要在服务器端而不是依靠Javascript。 我不知道您使用JSP有多好,但是从Servlet返回自定义内容是一项微不足道的任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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