Как сортировать листы по имени в книге PhpSpreadsheet, не нарушая индексы листов?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сортировать листы по имени в книге PhpSpreadsheet, не нарушая индексы листов?

Сообщение Anonymous »

В настоящее время я работаю с PhpSpreadsheet для создания отчетов об оценке в формате .xlsx. Эти оценки делятся на категории (например, «Оценка А», «Оценка Б» и т. д.), и мне нужно сгруппировать все похожие типы вместе.
Мое приложение обладает функциональностью, которая объединяет все типы оценок в одну один лист в книге. Я временно храню каждый тип оценок на сервере в хорошо организованной папке в своем хранилище, имеющей соответствующие разрешения на чтение и запись.
После того как все эти оценки сохранены, я перебираю каждую рабочий лист и лист для объединения данных в единую «MasterSpreadsheet». До этого момента все работает так, как ожидалось.
Однако я столкнулся с проблемой, связанной с необходимостью сортировки этих оценок по именам листов в окончательной книге. К сожалению, PhpSpreadsheet не предоставляет для этого встроенных функций, и мой текущий обходной путь — клонировать MasterSpreadsheet и вставлять листы в алфавитном порядке — вызывает путаницу из-за несоответствий индексов листов.
Имеется кто-нибудь сталкивался с подобной проблемой или имел решение, которое могло бы помочь отсортировать листы в алфавитном порядке, не испортив индексы листов? Будем очень признательны за любые предложения или альтернативные подходы.

Код: Выделить всё

foreach ($sheetNames as $name) {
$sheet = $spreadsheet->getSheetByName($name);
if (!$sheet) {
error_log("Sheet $name doesn't exist in this workbook.");
continue;
}
$clonedSheet = clone $sheet;
$clonedSheet->setTitle($name);
$newSpreadsheet->addSheet($clonedSheet);
}
}
До сих пор я делал это, чтобы повторно вставить в новую таблицу все отсортированные листы. Но у меня всегда появляется сообщение об ошибке

Код: Выделить всё

Undefined array key 2
Справка...

Версия PhpSpreadsheet: 1.18
Php 8.1
Laravel 8.75< /p>


Подробнее здесь: https://stackoverflow.com/questions/784 ... srupting-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»