本文章將介紹如何使用PHP導出Excel并合并單元格。在日常工作中,有時候需要將數據導出到Excel表格中,并且需要將某些單元格合并以便更好地展示數據。使用PHP結合第三方庫PHPExcel,我們可以輕松地實現這一功能。
假設我們有一個學生成績表格需要導出,其中包含了學生的姓名、科目以及成績。我們希望將每個學生的成績合并到一行中,并將科目列進行合并,以便更好地展示學生成績。
首先,我們需要安裝PHPExcel庫。可以通過Composer來安裝PHPExcel,執行以下命令:
composer require phpoffice/phpexcel
安裝完成后,我們可以開始編寫代碼。首先,我們需要引入PHPExcel庫的自動加載器:
require_once 'vendor/autoload.php';
接下來,我們可以創建一個新的Excel文件并設置相關屬性:
$objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties() ->setTitle('學生成績表') ->setSubject('學生成績') ->setCreator('PHPExcel') ->setLastModifiedBy('PHPExcel') ->setDescription('學生成績表格') ->setKeywords('學生成績') ->setCategory('成績表');
現在,我們可以開始填充數據到Excel表格中了。假設我們已經從數據庫中獲取到了學生的成績數據,可以使用以下代碼來填充數據:
$data = [ ['張三', '語文', 90], ['張三', '數學', 95], ['李四', '語文', 88], ['李四', '數學', 92] ]; $row = 2; $prevStudent = null; foreach ($data as $row_data) { $student = $row_data[0]; $subject = $row_data[1]; $score = $row_data[2]; if ($student != $prevStudent) { // 合并姓名單元格 $objPHPExcel->getActiveSheet() ->mergeCells('A' . $row . ':A' . ($row + 1)); $prevStudent = $student; } // 填充數據 $objPHPExcel->getActiveSheet() ->setCellValue('A' . $row, $student) ->setCellValue('B' . $row, $subject) ->setCellValue('C' . $row, $score); $row++; }
在上面的代碼中,我們使用循環來遍歷數據并逐行填充到Excel表格中。當遇到不同的學生時,我們合并姓名這個單元格,以實現姓名只顯示一次的效果。
最后,我們還需要保存Excel文件并輸出到瀏覽器中:
$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="學生成績表.xlsx"'); header('Cache-Control: max-age=0'); $writer->save('php://output');
通過以上代碼,我們成功地創建了一個包含合并單元格的Excel文件,并將其導出到瀏覽器中。現在,我們可以點擊鏈接下載學生成績表格。
通過本文的介紹,您應該已經了解了如何使用PHP結合PHPExcel庫來導出Excel并合并單元格。這能夠幫助您更好地展示數據,并提升工作效率。