各位先進好!
小弟近日做匯出excel時遇到了一些問題,在試過一些方法後還是沒辦法成功的匯出我需要的結果
還請各位先進指導或是給予意見,小弟先謝過了:D~
方法一
<script type="text/javascript">
function exportExcel(){
var html = '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8" /><title>Excel</title>';
html += '';
html += document.getElementById('div_excel').innerHTML + '';
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
window.location.reload();
}
</script>
運用此方法是可以正常匯出excel,但是遇到資料筆數大於200筆的情況就無法匯出excel了(不知道為什麼),以上都是使用chrome才會發生的問題,但當我用safari時就可以正常匯出來@@...
方法二
我運用這套jquery http://goo.gl/P2dPN0 來做匯出excel,它一樣可以正常匯出但是還是遇到相同的問題,就是筆數大於200筆的情況無法匯出excel。
還請各位先進能給予指點,謝謝。
這個問題我大概十年前就遇過,需求大致是:
有個資料表,既要可以在網頁上呈現,又可以匯出(下載)為 Excel 檔。
本來程序是在後端 php 從 DB 撈出資料後,即時用參數判斷該產生 html 或 CSV 就行了。不過有個問題是,萬一這個資料表是個統計資料表,查詢很操 DB,或是很慢、時間很久,那 user 頻繁地的操作很可能會把 DB 給癱瘓。
第一種想法大概就是像發問者,希望匯出動作不要再撈一次 DB,直接由 web 產生就好。但問題會卡在 javasript 能力有限,困難重重。
第二種想法是把表格html當成資料,POST 到後台的 php,由 php 將 html 轉成 CSV,再 download,這行為很簡單,也沒什麼安全問題,只不過比較蠢一點、耗一點頻寬。
第三種是 php 在 DB 撈出資料後,先暫存為 CSV (或其它格式如 XML 也行),再由 CSV 產生 html 顯示。若 user 點擊下載連結,則直接下載 CSV 即可。這方法是第二種改良版,但 CSV 暫存必須另外考量清除問題。
以上供參考。