не удалось удалить буфер. Нет буфера для удаления

Я пытаюсь создать файл excel с расширением .xlsx из кода ниже. Я могу загрузить файл очень хорошо, но когда я его открываю с помощью листа excel, я получаю следующую предупреждающую ошибку. Excel не может открыть файл «dindi.xlsx», потому что формат файла или расширение файла недействительны. Убедитесь, что файл не поврежден и что расширение файла соответствует формату файла. Когда я открыл его с помощью блокнота, файл имел следующую ошибку:

Примечание: ob_end_clean () [ref.outcontrol]: не удалось удалить буфер. Нет буфера для удаления

Ниже приведен код того, что я пытаюсь сделать.

public function exportResults() { $this -> load -> database(); $query = $this -> db -> query(" SELECT * FROM farm LIMIT 10"); $results = $query -> result_array(); $objPHPExcel = new Excel(); $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objPHPExcel = $objReader->load('./files/farmdetails.xlsx'); $objPHPExcel ->getActiveSheet()->setTitle('farmreport'); $objPHPExcel -> setActiveSheetIndex(0); $i = 1; foreach ($results as $result) { $objPHPExcel -> getActiveSheet() -> SetCellValue('A' . $i, $result["name"]); $objPHPExcel -> getActiveSheet() -> SetCellValue('B' . $i, $result["dateofcontract"]); $objPHPExcel -> getActiveSheet() -> SetCellValue('C' . $i, $result["leasorname"]); $objPHPExcel -> getActiveSheet() -> SetCellValue('D' . $i, $result["acre"]); $objPHPExcel -> getActiveSheet() -> SetCellValue('E' . $i, $result["zone"]); $i++; echo $result["name"]; } ob_end_clean(); $filename = "dindi.xlsx"; header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename=' . $filename); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); ob_end_clean(); $objWriter -> save('php://output'); $objPHPExcel -> disconnectWorksheets(); unset($objPHPExcel); } 

Solutions Collecting From Web of "не удалось удалить буфер. Нет буфера для удаления"

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

 if (ob_get_contents()) ob_end_clean(); 

(проверьте, есть ли активный буфер вывода) или:

 if (ob_get_length()) ob_end_clean(); 

(проверяет, есть ли пустая строка в буфере), как было предложено @Venu.

также вы вызываете ob_end_clean(); два раз есть. И это работает только со стеклизуемыми буферами. Из руководства по PHP:

Эта функция отбрасывает содержимое самого верхнего выходного буфера и отключает эту буферизацию вывода.

Вы уверены, что не хотите использовать ob_clean () ?

Из раздела комментариев к документации по PHP , кредит на cornel на scoalaweb dot com:

Не используйте ob_clean() или ob_end_clean() для очистки белого пробела или другого нежелательного содержимого, «случайно» генерируемого включенными файлами.

Вложенные файлы не должны генерировать нежелательный контент в первую очередь.

Если это так, вы делаете что-то не так, как вставка пробела после « ?> » (В конце PHP-файлов не должно быть « ?> ») Или других ошибок, которые не следуют основным правилам синтаксиса PHP ,