Как обнаружить ячейку объединяется с помощью PhpSpreadsheet - PullRequest
2 голосов
/ 08 мая 2019

Используя PhpSpreadsheet, когда я читаю данные из таблицы xls, мне нужно выяснить, объединена ли эта ячейка с другими, если да, то выполнить с ней определенные действия, если нет, то ничего не делать

на данный момент я думал только о проверке наличия пустых элементов массива после текстовой ячейки, но это решение не совсем универсально ...

...
$inputFileName = $_FILES['uploadfile']["tmp_name"];
echo 'TMP-FILE-NAME: ' . $inputFileName;

$spreadsheet = IOFactory::load($inputFileName); //create new speedsheen object
$loadedSheetNames = $spreadsheet->getSheetNames(); //get name of Sheet

//and than print it
    //get Sheet Name
foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {

  $sheet = $spreadsheet->getSheet($sheetIndex);
  echo "<table border=\"1\">";
  $rows = $sheet->toArray();
   **$mergeCell = $sheet->getMergeCells(); // - This is the answer to my question**
foreach ($rows AS $row) {
echo "<tr>";
    foreach ($row AS $cell) {
        echo "<td>" . $cell . "</td>";
    }

    }
     echo '<br/>';
}
 echo "</table>";

1 Ответ

1 голос
/ 09 мая 2019

Чтобы проверить, была ли ячейка объединена или нет

  1. Сначала вы можете использовать функцию getMergeCells , чтобы получить все объединенные ячейки.

  2. Затем выполните цикл в этом списке ячеек, чтобы проверить, находится ли ваша ячейка в этом списке или нет.

Суммируйте : вы можете использовать этофункция для проверки объединенной ячейки или нет

// Check cell is merged or not
function checkMergedCell($sheet, $cell){
    foreach ($sheet->getMergeCells() as $cells) {
        if ($cell->isInRange($cells)) {
            // Cell is merged!
            return true;
        }
    }
    return false;
}

Код был указан из этого ответа

Для PhpSpreadSheet:

...