1.問題背景:前台頁面用表格展示了數據,還要支持將數據導出為EXCEL文件。 查詢資料庫有時很慢(例如時間範圍大[2年],sql語句執行時間差不多220s)一般是導出的資料是重新查詢資料庫還是可以直接把前台得到的資料傳給PHPExcel做處理?感謝每一個回答者。 PS:sql語句優化盡力了(索引分區做了 多表有的表資料300w條),如果查詢一週執行時間1.6s左右,查幾年就得幾分鐘了。
ringa_lee
html 表格可以直接匯出為xlsx;
如果不使用1,那麼前端展示資料前,將獲取的資料快取起來,導出時可以傳回後端而不需要再次資料庫操作;
2 的前提是,資料量在前後端通訊可以接受的範圍內(例如超過50MB 就屬於過大了),犧牲通訊的消耗換取資料庫的消耗。
其實js是有可以處理excel的插件的,不過你前台的資料不還是從後台拿到的嗎
js的excel插件,百度都有一堆 例如 exceljs
有些mysql管理軟體,例如navicat可以直接把資料庫匯出成為excel,不一定要用php才能匯出,雖然我世界上最好的語言什麼都能實現,但是你也要考慮下其他東西也能實現
個人不太支援將資料重新向後台調取,你或者可以向樓上那樣直接html到導出excel,當然你可以後台處理,不過你在顯示資料在html同時,將資料快取到伺服器,假如輸出excel直接從快取區讀出資料再輸出excel
一般匯出資料到EXCEL都是後端操作,這裡使用者會選擇一定的條件進行資料的匯出。後端如果比較耗時可以採用非同步任務來處理。
題主我想了解導出資料是導出所有資料嗎?還是可以選擇時間範圍呢?如果是匯出所有的,可以在後台跑定時任務,選擇客戶量少的時候,比如夜裡去後台去一下所有的數據,然後前段導出的時候直接拿就好了,定時任務每天還要定時檢查該數據是否為最新的
html 表格可以直接匯出為xlsx;
如果不使用1,那麼前端展示資料前,將獲取的資料快取起來,導出時可以傳回後端而不需要再次資料庫操作;
2 的前提是,資料量在前後端通訊可以接受的範圍內(例如超過50MB 就屬於過大了),犧牲通訊的消耗換取資料庫的消耗。
其實js是有可以處理excel的插件的,不過你前台的資料不還是從後台拿到的嗎
js的excel插件,百度都有一堆 例如 exceljs
有些mysql管理軟體,例如navicat可以直接把資料庫匯出成為excel,不一定要用php才能匯出,雖然我世界上最好的語言什麼都能實現,但是你也要考慮下其他東西也能實現
個人不太支援將資料重新向後台調取,你或者可以向樓上那樣直接html到導出excel,當然你可以後台處理,不過你在顯示資料在html同時,將資料快取到伺服器,假如輸出excel直接從快取區讀出資料再輸出excel
一般匯出資料到EXCEL都是後端操作,這裡使用者會選擇一定的條件進行資料的匯出。後端如果比較耗時可以採用非同步任務來處理。
題主我想了解導出資料是導出所有資料嗎?還是可以選擇時間範圍呢?如果是匯出所有的,可以在後台跑定時任務,選擇客戶量少的時候,比如夜裡去後台去一下所有的數據,然後前段導出的時候直接拿就好了,定時任務每天還要定時檢查該數據是否為最新的