Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

PHPExcel Ошибка открытия файла xlsx после сохранения

#phpexcel #php


С помощью PHPExcel сохраняю файл в формате xlsx. Сохраняется нормально, а вот когда
хочешь открыть Excel, выдает ошибку:


  В книге "Отчет по резервам.xlsx" обнаружено содержимое, котрое не
  удалось прочитать. Попробовать
  восстановить содержимое книги? Если вы
  доверяете источнику этой книги,
  нажмите кнопку "Да".


Нажимаем Да - выводится сообщение:


  Была выполнена проверка на уровне
  файла с последующим восстановлением
  файла. Некоторые фрагменты документа
  могли быть восстановлены либо удалены.


Генерируется XML с отчетом об ошибке:



    error048360_01.xml
    Обнаружены ошибки в файле
        "C:\Users\xxx\Downloads\Отчет по
        временным резервам с 01.01.2015
        (6).xlsx"
    
    

        Была выполнена проверка на
            уровне файла с последующим
            восстановлением файла. Некоторые
            фрагменты документа могли быть
            восстановлены либо удалены.
        
    



Настройки PHPExcel:

setPreCalculateFormulas(false);

/*Сохраняем документ*/
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Disposition: attachment;filename=' . $nameXLS . '.xlsx');


Используется office 2010.

После всех сообщений отчет открывается, и всё с ним нормально, как и должно быть.
Подскажите, как избавится от этих сообщений об ошибках?
    


Ответы

Ответ 1



В общем, проблема решилась довольно-таки просто: Оказалось, что нужно в коде указывать следующее сочетание: $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); либо $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); У меня же было так: $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.ms-excel'); Что есть неправильно.

Ответ 2



Скорее всего, имеет смысл порезать css перед генерацией excel. И вообще в принципе тем же самым пару дней назад занимался. Скиньте архив с исходниками и не забудьте в исходнике указать UTF-8(без BOM). гайд

Ответ 3



У меня была та же проблема, и помог этот код. После него ошибки не было. mb_internal_encoding('latin1');

Ответ 4



мучился с той же проблемой помог модуль импорта экспорта opencart https://www.opencart.com/index.php?route=extension/extension/info&extension_id=17 методом втыка подобрал решение в конце надо добавить exit; $objWriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="products.xlsx"'); header('Cache-Control: max-age=0'); $objWriter->setPreCalculateFormulas(false); $objWriter->save('php://output'); //без этой строки при открытии файла xlsx ошибка!!!!!! exit; причем с xls такой проблемы нет может кто прокомментирует потому что мозгов не хватает

Комментариев нет:

Отправить комментарий