FromQueryメソッドからファイルをダウンロードしています....ファイルをダウンロードすると、XLSXファイルを開くと、Officeから次のエラーメッセージが表示されます。
「Excelはファイルを開くことができません
これが私の方法です
namespace Modules\Profile\Exports;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use Modules\Profile\Entities\Profile;
class ProfileExport implements FromQuery
{
use Exportable;
public function __construct($range)
{
$this->start = $range['start'];
$this->end = $range['end'];
}
public function query()
{
return Profile::query()->where('created_at', '>=', $this->start . ' 00:00:00')
->where('created_at', '<=', $this->end . ' 23:59:59')
->whereHas('user.roles', function($query){
$query->where('id', 2);
});
}
}
コントローラーからこう呼んでいます
//$request->start = '2018-01-01';
//$request->end = '2018-05-01';
$range = ['start'=>$request->start, 'end'=>$request->end];
return (new ProfileExport($range))->download($request->start . '-' . $request->end .'-pet-parent-signups.xlsx');
予想される行動:
データとともにダウンロードするファイル
実際の動作:
ファイルはダウンロードされますが、Excelで開くとエラーが発生します
クエリを雄弁にテストしましたが、データを含むコレクションが返されます。
(https://user-images.githubusercontent.com/18451450/40511758-f61e6570-5f5d-11e8-9f37-0b594f60be59.png)
また、事前に感謝します:)
特に、このラッパーを最初に書くのに時間をかけるために
それでもPhpSpreadsheetで同じ問題があるかどうかはわかりませんが、PHPExcelでは、 <?php
オープンタグの前にスペース( )があるという問題がありました。 これは、過去にこのエラーを引き起こしていたものです。
uはnanoまたはvimでエラーファイルを開くことができます。
PKの前にスペースがある場合は、次のようになります。
コードまたはベンダーでエラーが発生した可能性があります。 私は同じ問題に遭遇し、ベンダーフォルダの削除に対処しました。 ベンダーを再インストールした後、うまく機能します
みなさん、リードありがとうございます。
ファイルの先頭に余分な改行などがあるのは正しいと思います。 まだトレースしていませんが、CSVに切り替えると、ファイルを開くことができ、データはありますが、最初の行は空白です。
もう少し見てみると、悪い報告があります。 改行で始まり、その後にファイルを取得しました
これを閉じて、問題のより適切な説明を含む新しいものを開きます。 空白行のソースが見つかりません
私は同じ問題に遭遇しました。 私はによって修正しました
$filename = 'meal_list_'.date('YmdHis').'.xlsx';
Excel::store(new MealExport($request), $filename, 'public');
return redirect( Storage::url("storage/{$filename}" ));
}
皆さんこんにちは、
私はこの実行不可能なダウンロード機能を理解するために一日を過ごします。 PHPSpreadSheetはPHPバッファを使用しているようです。 また、PHPの構成によっては、いくつかの警告またはエラーが出力に干渉する可能性があります。
使用:
// in controller
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');
私のために解決します。
多分それは何人かの人々を助けるべきです。
この素晴らしいライブラリをありがとう。
皆さんこんにちは、
私はこの実行不可能なダウンロード機能を理解するために一日を過ごします。 PHPSpreadSheetはPHPバッファを使用しているようです。 また、PHPの構成によっては、いくつかの警告またはエラーが出力に干渉する可能性があります。
使用:
// in controller ob_end_clean(); // this ob_start(); // and this return Excel::download(new MyExport, 'file.xls');
私のために解決します。
多分それは何人かの人々を助けるべきです。この素晴らしいライブラリをありがとう。
THanksはその完璧な答えをたくさん
皆さんこんにちは、
この解決策:
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');
動作し、破損した問題を解決します。 ただし、Xlsx / Xlsを使用したエクスポートにはまだ問題があります。
ダウンロードしたファイルは次のようになります。
これを修正する方法はありますか?
どうも !
皆さんこんにちは、
私はこの実行不可能なダウンロード機能を理解するために一日を過ごします。 PHPSpreadSheetはPHPバッファを使用しているようです。 また、PHPの構成によっては、いくつかの警告またはエラーが出力に干渉する可能性があります。
使用:
// in controller ob_end_clean(); // this ob_start(); // and this return Excel::download(new MyExport, 'file.xls');
私のために解決します。
多分それは何人かの人々を助けるべきです。この素晴らしいライブラリをありがとう。
愛してる男..あなたは私の頭を救った...
それでもPhpSpreadsheetで同じ問題があるかどうかはわかりませんが、PHPExcelでは、
<?php
オープンタグの前にスペース()があるという問題がありました。 これは、過去にこのエラーを引き起こしていたものです。
こんにちは@patrickbrouwers
コメントをありがとう。
私のために解決します。
ajaxを使用してダウンロードしている場合は、
responseType: 'blob'
をajaxリクエストに追加してください(私はaxiosを使用しています)
私のサンプルコード:
axios.post('/path/to/export', data, {
responseType: 'blob',
})
.then(response => {
const filename = 'file.xlsx';
let blob = new Blob([response.data], {
type: 'application/octet-stream',
});
if (typeof window.navigator.msSaveBlob !== 'undefined') {
// IE workaround for "HTML7007: One or more blob URLs were
// revoked by closing the blob for which they were created.
// These URLs will no longer resolve as the data backing
// the URL has been freed."
window.navigator.msSaveBlob(blob, filename);
} else {
let blobURL = window.URL.createObjectURL(blob);
let tempLink = document.createElement('a');
tempLink.style.display = 'none';
tempLink.href = blobURL;
tempLink.download = filename;
tempLink.click();
window.URL.revokeObjectURL(blobURL);
}
})
responseType: 'blob'
がないと、ダウンロードしたファイルを開くことができません
ajaxを使用してダウンロードしている場合は、
responseType: 'blob'
をajaxリクエストに追加してください(私はaxiosを使用しています)私のサンプルコード:
axios.post('/path/to/export', data, { responseType: 'blob', }) .then(response => { const filename = 'file.xlsx'; let blob = new Blob([response.data], { type: 'application/octet-stream', }); if (typeof window.navigator.msSaveBlob !== 'undefined') { // IE workaround for "HTML7007: One or more blob URLs were // revoked by closing the blob for which they were created. // These URLs will no longer resolve as the data backing // the URL has been freed." window.navigator.msSaveBlob(blob, filename); } else { let blobURL = window.URL.createObjectURL(blob); let tempLink = document.createElement('a'); tempLink.style.display = 'none'; tempLink.href = blobURL; tempLink.download = filename; tempLink.click(); window.URL.revokeObjectURL(blobURL); } })
responseType: 'blob'
がないと、ダウンロードしたファイルを開くことができません
感謝!! 私の命を救ってください、私は私のエクスポートされたファイルを破壊したphpコードのどの行を見続けます..結局はaxiosです
皆さんこんにちは、
私はこの実行不可能なダウンロード機能を理解するために一日を過ごします。 PHPSpreadSheetはPHPバッファを使用しているようです。 また、PHPの構成によっては、いくつかの警告またはエラーが出力に干渉する可能性があります。
使用:
// in controller ob_end_clean(); // this ob_start(); // and this return Excel::download(new MyExport, 'file.xls');
私のために解決します。
多分それは何人かの人々を助けるべきです。この素晴らしいライブラリをありがとう。
@Leenzuurに感謝し@ Leenzuurの方法では、10モデルのエクスポートクラスが10ある場合、ダウンロード時に10か所で追加する必要があります。
この問題は、エクスポートに変更を加えることなく、今日私に起こり始めました。 @leenzuurコードサンプルを使用すると、何時間もの調査の後で修正されました。
最も参考になるコメント
皆さんこんにちは、
私はこの実行不可能なダウンロード機能を理解するために一日を過ごします。 PHPSpreadSheetはPHPバッファを使用しているようです。 また、PHPの構成によっては、いくつかの警告またはエラーが出力に干渉する可能性があります。
使用:
私のために解決します。
多分それは何人かの人々を助けるべきです。
この素晴らしいライブラリをありがとう。