PhpSpreadsheet
PhpSpreadsheet copied to clipboard
Border in vertical merged cell
I have this problem setting border in vertical merged cell (getOutline()) the border is visible only on the top, left and right of the first cell of the merged group
this is the code: `<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Border; use PhpOffice\PhpSpreadsheet\Style\Color;
$spreadsheet = new Spreadsheet(); $activeWorksheet = $spreadsheet->getActiveSheet();
$activeWorksheet->setCellValue('B3', 'TEST'); $activeWorksheet->mergeCells("B3:B10"); $activeWorksheet->getStyle('B3')->getBorders()->getOutline()->setBorderStyle(Border::BORDER_THIN)->setColor(new Color('00000000'));
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="bugtest.xlsx"'); $writer->save('php://output');
?>`
the result on excel is:
any suggest? could be a bug?
Thanks Marco Piai
You can get the result you want with getStyle(B3:B10) instead of getStyle(B3). I don't know offhand how styles for merged cells are supposed to work, so I am not sure whether the behavior that you describe is a bug. I will investigate.
YES this works. I hadn't thought about it
My investigation of how Excel works is puzzling. Here's cell B2 with an outline border:
And here's what happens when I merge B2:B4.
The top border stays. The bottom border disappears, perhaps understandably. The left and right borders also disappear completely, which I don't understand at all. So Excel's behavior is no less unexpected than PhpSpreadsheet's. On this basis, I don't think there's a reason to change PhpSpreadsheet, but I'll leave this ticket open for a while to see if anyone thinks otherwise.
Closing. No update in 5 months, no suggestions for improvements.