PHP Excel是一款非常受歡迎的辦公軟件操作庫,能夠在PHP開發中幫助我們對Excel文件進行讀寫操作。然而,當我們在處理大量數據的時候,Excel文件的處理往往會占用很長時間,導致用戶無法很好地了解操作的進度及時間。因此,在本文中,我們將詳細介紹如何運用PHP Excel 來查看進度。
使用progress-bar顯示進度
一個比較簡單并且常見的方式就是運用progress-bar進度條來顯示讀寫操作的進度狀態
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>使用Progress-bar顯示進度</title> <style> .progress-bar{ width: 80%; background-color: #f2f2f2; } .progress{ background-color: #2196F3; width: 1%; height: 30px; transition: width 1s; } </style> </head> <body> <div class="progress-bar"> <div class="progress"></div> </div> </body> </html>
上述代碼是一個簡單的HTML頁面,其中定義了一個進度條progress-bar和一個默認寬度為1%的進度progress樣式,后續我們動態修改進度條的寬度即可實現完成進度的展示效果。
尋找Excel表格待處理行數
在顯示Excel讀寫操作進度之前,我們需要獲取待操作的數據條數,這一過程需要使用PHPExcel中的方法count()來計算Excel表格中的有效數據總數。
public function getExcelCount($path){ $objPHPExcel = PHPExcel_IOFactory::load($path); $sheetCount = $objPHPExcel->getActiveSheet()->getHighestRow(); return $sheetCount; }
在上述示例中,我們首先使用load()方法將待操作的Excel文件路徑傳入,然后通過getActiveSheet()方法獲取當前工作表對象,并使用getHighestRow()方法獲取當前工作表的總行數。
查看實時進度
拿到Excel的總行數之后,我們就可以根據實際的操作進度來動態變更進度條的寬度,從而在頁面上實時顯示操作進度。
public function phpExcel($path){ $objPHPExcel = PHPExcel_IOFactory::load($path); $sheetCount = $objPHPExcel->getActiveSheet()->getHighestRow(); for($i=1; $i<=$sheetCount; $i++){ // 操作Excel $spreadsheet->getActiveSheet()->setCellValue('A1', 'Hello World !'); // 計算進度比例 $progress = $i/$sheetCount * 100; echo "<script type='text/javascript'>document.querySelector('.progress').style.width = '".$progress."%';</script>"; // 將Excel文件寫入硬盤 $writer = PHPExcel_IOFactory::createWriter($spreadsheet, 'Excel2007'); $writer->save($path); } }
在上面的示例中,我們使用for循環對Excel表格進行操作,在每次操作之后,我們通過計算當前的進度比例,同時使用JavaScript動態修改進度條的寬度(因為進度條是使用HTML和CSS構建出來的),從而實現實時進度的顯示。在每次Excel表格操作結束后,我們可以將excel文件保存到硬盤。實際操作中,我們通常需要將上傳到服務器的Excel文件進行備份,以免錯誤導致文件丟失。
總結
本文通過實戰演示了如何使用PHP Excel來工作中的Excel讀寫操作進度狀態。在實際應用中,我們當然還可以根據具體需求,加入更加豐富的異常處理及反饋機制,幫助我們更好地了解Excel文件的讀寫操作進度,提高我們的開發效率。