簡體   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