2016-06-02 3 views
0

У меня есть 50 000 сырья. Я хочу экспортировать их, но System не удалось экспортировать. Я использую этот код. Есть ли лучшее решение для этого?Экспорт больших файлов в отдельные листы Laravel Maatwebsite

Excel::create('catalogDumptReport', function ($excel) use ($finalArray) { 
     $excel->sheet('catalogDumptReport', function ($sheet) use ($finalArray) { 
      $sheet->fromArray($finalArray); 
      $sheet->setFontFamily('Verdana'); 
      $sheet->setFontSize(10); 
      $sheet->row(1, function ($row) { 
       $row->setFontWeight('bold'); 
      }); 
      $sheet->setBorder('A1', 'thin'); 
      $sheet->setHeight(1, 20); 
     }); 

    })->export('xls') 
     ->download('xls'); 
+0

Что вы подразумеваете под системным сбоем, ограничением памяти или ...? Пожалуйста, разместите запрос, заполняющий $ finalArray –

+0

что за ошибка? Я предполагаю, из памяти? увеличить предел памяти php или разделить их на несколько файлов. – vitr

+0

Система не позволяет системе повесить много. Я тоже увеличил память. Нет успеха. Я также пытаюсь расщепить их, но некоторые из них также не работают. Я разделяю их на 8000 на лист. – mayur

ответ

0

Лично я советую исключить такие большие файлы xls (непосредственно в браузере). Лучший способ сделать это (и самый быстрый) - экспортировать его в фоновом режиме (например, async Laravel Queue и т. Д.).

Есть в основном две проблемы вычислительной сложности:

  1. время сложность - которая растет очень быстро, что означает, что время для загрузки в данном примере будет сильно hrows тоже.
  2. сложность памяти - которая может исчерпать все ресурсы памяти на машине, которая также может исчерпывать все ресурсы памяти на машине также очень быстро - что означает, что не только текущая система/программа может действовать очень медленно, но и каждый другой, эта машина.

Как я сказал, что лучший способ это поставить эту генераторную XLE, чтобы на заднем плане - но есть больше:

Вы должны найти способ, чтобы разделить данные и вставляет его с частями данных - не все сразу. Это может сэкономить ресурсы памяти.

После того, как вы получите экспорт в очередь, вы можете проверить браузер через ajax-запрос, если файл готов к загрузке и позволяет пользователю загрузить уже подготовленный файл xls.

Смежные вопросы