@ProzorovskiyRostislva

Laravel Excel несколько вопросов?

Есть такая задача, спарсить файл xlsx. Есть несколько вопросов по этому поводу.
$file = $this->argument('filepath');
        $excelCollectionExcel = Excel::load($file, function($reader) {
            })->get()->toArray();

        dd($excelCollectionExcel);

Вставил такой простенький код в контроллер и пытаюсь спарсить сравнительно небольшой файл(1 лист-2тыс. записи, 2 лист-700 записей)
Через postman среднее время ответа около 2-ух минут, как то это не норма, по моему. Когда тот же файл разбил по листам и засунул в csv - время ожидания 10 секунд. Единственный у меня возможный вариант- много пустых записей(в конфигах прописал при импорте ignoreEmptyRows = true или как то так, не помогло. Вопрос 1:
Что может влиять на такой медленный парсинг файла? Как в Excel mac os убрать пустые row or column.
Второй вопрос: может кто-нибудь делать что то подобное. Можно ли спарсить файл, получить коллекцию, засунуть в каждый элемент коллекции определенное значение и сохранить текущий файл с этими изменениями, или же нужно загружать его снова?
  • Вопрос задан
  • 1580 просмотров
Пригласить эксперта
Ответы на вопрос 1
fomvasss
@fomvasss
PHP developer
Как раз вчера делал парсер...
И у меня тоже очень медленно работал парсинг файла xlsx на 1500 строк, но попробовал добавил 'chunk', и с ~2 мин стало 2 сек.

\Maatwebsite\Excel\Facades\Excel::filter('chunk')
            ->selectSheetsByIndex(0)->load($pathToFile)
            ->chunk(100000, function ($results) {
                $this->rawDataArray = $results->toArray();
            });

Не понял как той chunk помог, но помог. Потом уже я массив $this->rawDataArray трансформировал как мне надо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы