在處理數據的過程中,有時候我們需要將一些相同的數據合并在同一個單元格中,以便于展示和閱讀。而通過PHP導出Excel表格時,我們也可以很方便地實現合并單元格的功能。
比如說,我們有一個銷售報表,其中某個單元格需要展示某一時間段內的銷售總額。假設這個時間段是從1月1日到1月31日,那么我們可以將這個單元格合并成一個大的單元格,以便于突出顯示這個時間段內的結果。
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', '銷售報表'); $sheet->setCellValue('A2', '時間段'); $sheet->setCellValue('B2', '銷售總額'); $sheet->mergeCells('A2:A3'); $sheet->mergeCells('B2:B3'); $spreadsheet->getActiveSheet()->getStyle('A2:B3')->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER); $spreadsheet->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true);
上面的代碼中,我們首先創建了一個新的Excel表格,并獲取了當前的活動表單。然后,我們設置了表頭的內容,并對時間段和銷售總額這兩個單元格進行了合并。
在合并單元格后,我們還可以對合并后的單元格進行樣式上的調整,以使其在導出時更加美觀和易讀。比如我們可以使用getAlignment()
方法設置垂直居中,使用getFont()
方法設置加粗等。
除了合并固定的單元格外,我們還可以根據實際數據動態合并單元格。
$data = [ ['日期', '產品', '銷售數量'], ['2021-01-01', 'A產品', 100], ['2021-01-01', 'B產品', 200], ['2021-01-02', 'A產品', 150], ['2021-01-02', 'B產品', 250], ]; $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // 輸出數據 foreach ($data as $row => $rowData) { foreach ($rowData as $col => $cellData) { $cellCoordinate = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col + 1) . ($row + 1); $sheet->setCellValue($cellCoordinate, $cellData); } } // 動態合并單元格 $lastRow = count($data) + 1; $sheet->mergeCells("A2:A" . $lastRow);
上面的代碼中,我們首先定義了一個二維數組$data
,其中存儲了銷售報表的數據。然后,我們通過循環遍歷的方式將數據逐一寫入到Excel表格中。
最后,我們使用mergeCells()
方法根據實際數據的行數進行動態合并。這樣,無論我們的數據有多長,都能夠正確地合并相同的日期單元格。
總結來說,通過PHP導出Excel表格時,我們可以很方便地實現合并單元格的功能。無論是對固定單元格的合并,還是根據實際數據的動態合并,都可以通過簡單的代碼實現。合并單元格不僅可以提升表格的美觀程度,還可以使數據更直觀地呈現在用戶面前。