2015-07-20 2 views
0

Прежде всего, я знаю, что для PHPExcel существует огромное использование памяти при создании листа Excel из базы данных. Я использую базу данных mysql, а возвращаемые строки - около 14K плюс. Мне нужно создать лист Excel для этих записей.PHPEXCEL Неустранимая ошибка: разрешенный размер памяти 134217728 байт исчерпан. Проблема для addTableRow() menthod

Возможно создание листа Excel с использованием этого кода для небольших записей, однако для записей 14K этот код прерывается. Я видел методы кеширования ячеек, но будучи новичком с PHPExcel, мне очень сложно.

Может ли кто-нибудь помочь мне решить эту проблему.

Источник: https://github.com/segy/PhpExcel

Ниже мой фрагмент кода:

App::import('Component', 'PhpExcel'); 
$phpExcelObj = new PhpExcelComponent(); 
$phpExcelObj->createWorksheet()->setDefaultFont('Calibri', 12); 
// define table cells 
$table = array(
array('label' => ('Id'), 'wrap' => true), 
array('label' => ('Name'), 'wrap' => true, 'filter' => true), 
array('label' => ('Email_id'), 'wrap' => true, 'filter' => true), 
array('label' => ('status'), 'wrap' => true, 'filter' => true) 
      ); 
$phpExcelObj->addTableHeader($table, array('name' => 'Cambria', 'bold' => true)); 
$indx = 1; 
foreach ($ckt_dtls as $usr_dtls) { 
$rows[] = $indx; 
$rows[] = $usr_dtls['name']; 
$rows[] = $u_email; 
$rows[] = $stat; 
$indx++; 
$phpExcelObj->addTableRow($rows); 
} 
$phpExcelObj->addTableFooter()->output($filename = $filename, $writer = 'Excel2007'); 

Ошибка я получаю:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to 
allocate 57 bytes) in /var/www/4thambit_v6/app/vendors/PHPExcel/Worksheet.php on line 1218 

ответ

0

Попробуйте расширить лимит памяти PHP использует для сценария , введя следующий код в начале: ini_set("memory_limit", "2048M"); Если он не работает, попробуйте с номером больше 2048M

0

Если вы не хотите беспокоиться о памяти или не можете изменить настройку memory_limit, вы можете попробовать вместо этого использовать Spout.

Я не знаю ни одной CakePHP-обертки вокруг этой библиотеки, но ее не должно быть слишком сложно использовать в вашем проекте. Просто следуйте инструкциям здесь: https://github.com/box/spout#manual-installation

Написание 14K должно занимать несколько секунд и не более 10 МБ памяти!

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

  • Нет связанных вопросов^_^