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