[英]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.