Возможно, вы превышаете лимит в 65 000, на что вы устанавливаете начальное значение $ rowscounter? 1 или 0 (ноль)? Причина, по которой я спрашиваю, что результаты массива начинаются с индекса 0 (ноль), вы добавляете строку, а затем увеличиваете счетчик после добавления. Таким образом, если вы начнете счетчик с 0 (ноль), то у вас может быть больше строк, чем вы посчитали. Также вам не хватает строки в операторе else, вы перебираете значение, но не добавляете его на лист
попробуйте это
$rowscounter = 1;
foreach($result as $value)
{
$val = array_values($value);
if($rowscounter < 65000)
{
$objPHPExcel->addRow($val,$rowscounter);
}
else
{
$active_sheet++;
$objPHPExcel->createSheet();
$objPHPExcel->setActiveSheetIndex($active_sheet);
$rowscounter = 1;
// add missing row
$objPHPExcel->addRow($val,$rowscounter);
}
$rowscounter++;
}
// deliver header
header("Content-Type: $mtype; charset=" . $objPHPExcel->sEncoding);
header("Content-Type:application/octet-stream");
header("Content-Disposition: inline; filename=\"" . $filename . ".$ext\"");
// Save it as an excel 2003 file
$objWriter = IOFactory::createWriter($objPHPExcel,$objPHPExcel->sFileFormat);
//echo "Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB";exit;
$objWriter->save('php://output');
простой пример того, что я пытаюсь объяснить, если $ i установлен в 0 (ноль), условие else не выполняется. Таким образом, у вас будет дополнительная строка в ваших результатах. Если $ i установлен в 1, условие else выполняется
$count = array(1,2,3,4,5,6,7,8,9,10);
$i=1; // set this to 0 (zero) and test, set to 1 and test
foreach($count as $cnt) {
if($i < 10) {
echo "If condition - Count value: ".$cnt." i value:".$i."<br />";
} else {
echo "Else condition - Count value: ".$cnt." i value:".$i."<br />";
}
$i++;
}