PHP下載Excel文件是Web應用程序中非常普遍的需求,因為Excel表格是進行數據處理的首選工具之一。
在PHP中,使用PHPExcel這個庫可以很方便地實現Excel的創建、讀取、修改和下載。以下是一個例子:
require_once 'PHPExcel.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'Hello') ->setCellValue('B1', 'World'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="example.xlsx"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output');
在上面的例子中,首先會創建一個PHPExcel對象。然后通過setActiveSheetIndex方法設置當前活動的工作表,并使用setCellValue方法設置工作表上的單元格的值。接下來,使用PHPExcel_IOFactory庫中的createWriter方法來創建一個Excel2007格式的寫入器,最后設置一些HTTP頭信息來向瀏覽器返回Excel文件的數據流。
如果要從數據庫中獲取數據并導出到Excel文件中,可以使用以下代碼:
require_once 'PHPExcel.php'; // 獲取數據庫中的數據 $conn = mysqli_connect('localhost', 'root', '', 'test') or die('Could not connect: '.mysqli_error($conn)); $sql = 'SELECT name, age, gender FROM users'; $result = mysqli_query($conn, $sql); // 創建PHPExcel對象 $objPHPExcel = new PHPExcel(); // 設置當前活動的工作表 $objPHPExcel->setActiveSheetIndex(0); // 設置工作表的列名 $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Name') ->setCellValue('B1', 'Age') ->setCellValue('C1', 'Gender'); // 設置單元格格式 $headerStyle = array( 'font' =>array('bold' =>true), 'alignment' =>array('horizontal' =>PHPExcel_Style_Alignment::HORIZONTAL_CENTER) ); $objPHPExcel->getActiveSheet()->getStyle('A1:C1')->applyFromArray($headerStyle); // 填充數據 $row = 2; while ($data = mysqli_fetch_assoc($result)) { $objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $data['name']) ->setCellValue('B'.$row, $data['age']) ->setCellValue('C'.$row, $data['gender']); $row++; } // 設置列寬自適應 foreach(range('A', 'C') as $columnID) { $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setAutoSize(true); } // 輸出Excel文件 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="users.xlsx"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output'); exit;
在上面的例子中,首先連接到數據庫并執行查詢。然后創建了一個PHPExcel對象,并設置當前活動的工作表和列名。接下來,循環遍歷數據庫中的數據并將其填充到工作表中。最后通過設置列寬自適應和設置HTTP頭信息來下載Excel文件。
總結來說,使用PHPExcel庫可以方便地導出和下載Excel文件,而且可以支持大量數據和復雜的格式設置。