Laravel-excel: [QUESTION] Экспорт XLS не работает

Созданный на 13 апр. 2016  ·  23Комментарии  ·  Источник: Maatwebsite/Laravel-Excel

Я прочитал более старые вопросы о пустом пространстве до

Я использую последний пакет Laravel и Laravel-Excel.
Мой код ссылки;

      $.post(export_url, export_data, function(data){
        var uri       = 'data:application/vnd.ms-excel;charset=UTF-8,' + escape(data);
        var link      = document.createElement('a');
        link.href     = uri;
        link.style    = "visibility:hidden";
        link.download = table_config.toolbar.tools.export.name+'.'+file_type;
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
      });

Мой экспортный код;

return Excel::create($name, function($excel) use($records) {
            $excel->sheet('Sheet 1', function($sheet) use($records) {
                $sheet->fromArray($records);
            });
  })->export($type);

Когда пытаюсь открыть файл. Это коррумпировано. Этот же код отлично работает с CSV

Самый полезный комментарий

@edanao , попробуйте

if (ob_get_level() > 0) { ob_end_clean(); }

Все 23 Комментарий

Привет, я столкнулся с той же ошибкой.
Я прочитал все вопросы об удалении пробелов, прежде чем " Это не меняет того факта, что экспорт xls / xlsx не работает должным образом.
Вот мой код:
routes.php
Route::get('{id_me}/export/{table}', 'FileController<strong i="9">@exportCsv</strong>')->where('table', 'shops|societies|axes|programs|scenarios|users|surveys');

FileController.php

public function     exportCsv(Request $request)
    {
        $table      = $request->route('table');
        $model      = $this->loadModel($table);
        $society_id = $request->route('id_me');

        $rows = $model
            ->where('society_id', $society_id)
            ->get();

        $rows = $rows->toArray();

        Excel::create($table, function($excel) use ($rows, $table)
        {
            $excel->setTitle("Exportation des " . $table);

            $excel->sheet('shops', function($sheet) use ($rows)
            {
                $sheet->fromArray($rows);

            });
        })->download('xls');
    }

Этот код работает как шарм с расширением csv, а не xls или xlsx.
Под неработающим я подразумеваю, что он отображает нечитаемые данные.

Вот моя установка:
Laravel 5.1
"maatwebsite / excel": "~ 2.1.0"

Я почти уверен, что удалил все конечные пробелы раньше

Без обид, но это следует рассматривать как ошибку, которую необходимо исправить.
Даже если удаление того, что должно быть удалено для решения проблемы, для некоторых является «нормальным» решением, это слишком большая проблема с ремонтопригодностью проекта для того, что может быть незначительным использованием этой библиотеки (в моем случае).

Спасибо за вашу работу и внимание, мне очень нравится использовать Laravel-excel, даже если мне все еще не удается заставить некоторые из реализованных функций работать так, как планировалось.

Я столкнулся с аналогичной проблемой с Laravel 5.2. Сохранение файла (XLS / XLSX) работает нормально, однако функция загрузки ('xlsx') возвращает поврежденный файл.

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

Это не ошибка, если вы удалите неправильные пробелы (которых не должно быть), все будет нормально. Также это не проблема с этим пакетом, но с родительским пакетом PHPExcel, если вы сделаете это с этим пакетом, вы получите точно такую ​​же ошибку. С этой стороны мы ничего не можем сделать.

В самом деле, это было неправильное место с моей стороны.

Пожалуйста, как только я обновлюсь до php7, этот сайт не будет доступен в Chrome с ERR_INVALID_RESPONSE. Пожалуйста, есть ли что-нибудь, что я должен добавить или удалить ??

он работает в Windows, но не после того, как я загрузил его на свой Linux-сервер. пожалуйста, проверьте этот URL. http://jabu-portal.com.ng/test/excel загружается один раз, а затем начинает выдавать ошибку «файл не найден».
Спасибо

Это код для тестовой страницы
`Excel :: create ('Laravel Excel', function ($ excel) {

        $excel->sheet('Excel sheet', function($sheet) {

            $sheet->setOrientation('landscape');

        });

    })->export('xlsx');`

Я столкнулся с той же проблемой в моем текущем приложении. Но проблема в том, что я написал один и тот же код двумя разными методами, но он работает в одном методе, а не в другом.

Не рабочий метод:
общедоступная функция exportReport ($ reportName, $ reportData, $ reportType) {
$ data = json_encode ($ reportData);
$ data = json_decode ($ data, истина);
Log :: info ('Загрузить сгенерированный файл на локальный диск');
return (Excel :: create ($ reportName, function ($ excel) use ($ data, $ reportName) {
$ excel-> sheet ($ reportName, function ($ sheet) use ($ data) {
// Вставляем данные в таблицу Excel
$ sheet-> fromArray ($ данные);
// Закрепляем первую строку
$ sheet-> freezeFirstRow ();
});
}) -> скачать ($ reportType));
}

имеют ту же проблему - в основном загрузка csv отлично работает в моей локальной среде разработки [LAMP на windows + php5.6 + Laravel 5.3], но на моем удаленном производственном сервере получено ERR_INVALID_RESPONSE. ubuntu, nginx + php7,0 + laravel5.3 ... есть идеи?

@topegret загрузите php7.0-zip, чтобы загрузить zip-архив, или замените 'xslx' на 'xls', вот что я сделал, и это сработало.

@ LordRahl90 У меня была такая же проблема при экспорте только xlsx, но установка php7.0-zip решила мою проблему. Молодец брат

Я проверил свой, это был почтовый индекс php 7.0, и мне нужен только файл csv ...

у нас есть решение для этого?
У меня также возникла проблема, у меня на сервере nginx установлен php7, и я хочу загрузить файл xls.
@topegret, где вы можете решить свою проблему?

Спасибо за любую помощь!

@edanao , попробуйте

if (ob_get_level() > 0) { ob_end_clean(); }

Ага. Я прогуляюсь по этому поводу. в основном я писал свои собственные вещи. Я однажды
Прочтите статью после того, как у меня будет собственное решение. кажется, папка (и) nginx
неправильно настроены разрешения. но я не тестировал.

В среду, 5 апреля 2017 г., в 11:43, vitaliyb [email protected] написал:

@edanao https://github.com/edanao , попробуйте очистить буфер перед
вызов функции загрузки. В коде должен быть пробел
что вызывает ошибку.

если (ob_get_level ()> 0) {ob_end_clean (); }

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/Maatwebsite/Laravel-Excel/issues/762#issuecomment-291922033 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AJqw_Xy1YDT-MAFLz8t6eDJNUD8-jn8Yks5rs8SVgaJpZM4IGjGg
.

@topegret Как вы решили?
У меня такая же проблема с centos + nginx

Спасибо @vitaliyb и @topegret !
Оказывается, всякий раз, когда я использую обновление композитора в Laravel, модуль PHPExcel не обновляется, поэтому я не получаю правильную версию. Я удалил лишнюю паузу, как предлагается здесь https://github.com/PHPOffice/PHPExcel/issues/642, и очистил кеш конфигурации, чтобы быть уверенным, и это сработало.
Надеюсь это поможет.

Наконец, я обнаружил проблему, настроив папку / tmp проекта.
Теперь у меня это работает.
Спасибо.

Привет, у меня была аналогичная ошибка в следующем коде:

return Excel::create($name, function($excel) use($records) {
            $excel->sheet('Sheet 1', function($sheet) use($records) {
                $sheet->fromArray($records);
            });
  })->export($type);

Имя файла ($ name) и имя листа (Sheet 1) не должны содержать пробелов. После удаления пробела все заработало как шарм. Ваше здоровье.

Спасибо @vitaliyb

@edanao , попробуйте

if (ob_get_level() > 0) { ob_end_clean(); }

Спасибо, у меня сработало

если (ob_get_level ()> 0) {ob_end_clean (); }

Отличный совет, большое спасибо!

если (ob_get_level ()> 0) {ob_end_clean (); }

Отличный совет, большое спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги