Reputation: 849
Here, I'm reading an excel sheet which may or may not have merged cells. Well looping through the cells in the current sheet, if i come across a merged cell then i should be able to find its range and value.
These are the steps:-
1. Reading the cell A1 or B1 or B7 or A9.
2. Check whether its merged with any other cell.
3. If the cells are merged then get the range of the merge, for ex: A1 to A7 or A1 to D1
4. And finally after getting the range get the value.
Upvotes: 3
Views: 3723
Reputation: 212402
For any given cell object, there are a number of helper methods available
$cell->isInMergeRange()
Will return a boolean, a true/false value indicating if a cell is part of a merge range
$cell->getMergeRange()
Will return the merge range that the cell is apart of (e.g. "A1:C3"), or a boolean false if it is not part of a merge range
$cell->isMergeRangeValueCell()
Will return a boolean true/false indicating if this cell is the master cell in the range (top left cell) in a merge range (that holds the actual data value)
Additionally, the worksheet object has a method
$worksheet->getMergeCells()
which will return an array listing all the merge ranges within the worksheet
Lastly, a call to the static method
PHPExcel_Cell::splitRange($mergeRange);
passing in a range value like 'A1:C3', will return an array with two elements; the first being the address of the top-left cell in the range (that holds the actual data value), the second being the bottom right cell address, the "end" of the range
Upvotes: 4